Understanding VS debugger output

Started by
2 comments, last by cozzie 7 years, 5 months ago

Hi,

I've noticed that for a long time I'm ignoring some things in the Visual Studio C++ debugger output.

Just curious if someone can explain some things and perhaps give me some advice if/ how to 'solve' any potential problems.

Here's an example:


'Crealysm11.exe' (Win32): Loaded 'E:\projects\Crealysm11\Debug\Crealysm11.exe'. Symbols loaded.
'Crealysm11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Cannot find or open the PDB file.
'Crealysm11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Cannot find or open the PDB file.
'Crealysm11.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\kernel32.dll'
'Crealysm11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Cannot find or open the PDB file.
'Crealysm11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Cannot find or open the PDB file.
'Crealysm11.exe' (Win32): Loaded 'C:\Program Files (x86)\AVG\Av\avghookx.dll'. Cannot find or open the PDB file.
'Crealysm11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\user32.dll'. Cannot find or open the PDB file.
'Crealysm11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\win32u.dll'. Cannot find or open the PDB file.
'Crealysm11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\gdi32.dll'. Cannot find or open the PDB file.
'Crealysm11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\gdi32full.dll'. Cannot find or open the PDB file.
'Crealysm11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\D3DCompiler_47.dll'. Cannot find or open the PDB file.
IGIESW e:\projects\crealysm11\debug\crealysm11.exe found in whitelist: NOIGIWHW Game e:\projects\crealysm11\debug\crealysm11.exe found in whitelist: NO
Exception thrown at 0x77BAA6F2 in Crealysm11.exe: Microsoft C++ exception: _com_error at memory location 0x00AFC4E8.
Exception thrown at 0x77BAA6F2 in Crealysm11.exe: Microsoft C++ exception: _com_error at memory location 0x00AFD0C4.
Exception thrown at 0x77BAA6F2 in Crealysm11.exe: Microsoft C++ exception: _com_error at memory location 0x00AFD1E0.
Exception thrown at 0x77BAA6F2 in Crealysm11.exe: Microsoft C++ exception: _com_error at memory location 0x00AFE438.
Exception thrown at 0x77BAA6F2 in Crealysm11.exe: Microsoft C++ exception: _com_error at memory location 0x00AFE5E8.
The thread 0x17f8 has exited with code 0 (0x0).
The thread 0x1ad0 has exited with code 0 (0x0).
The thread 0x22e0 has exited with code 0 (0x0).
The thread 0x2ab4 has exited with code 0 (0x0).
The thread 0x22fc has exited with code 0 (0x0).
The thread 0x104c has exited with code 0 (0x0).

1. A lot of 'cannot find or open the PDB file'; can I somehow solve this, or should I ignore it?

2. What's with the whitelist; I think I only saw this first the first time a few days ago

3. Those exception _com error etc. only occur when I switch from windowed to fullscreen (D3D11 application) (going back to windowed doesn't give them). I don't use CComPtr for my d3d device, context, buffers etc, so I cannot explain why this happens.

4. I'm not programming for more then 1 thread explicitly, but I assume in the background multiple threads are created and uses, and in the debug output I can see that threads are closed when the program stops. Is this a correct assumption?

Thanks for letting me learn more :)

Crealysm game & engine development: http://www.crealysm.com

Looking for a passionate, disciplined and structured producer? PM me

Advertisement

1. PDB files are a visual studio file unless you want to debug the DLL's you can ignore that message.

2. I'm not sure what whitelist is

3. Might not be to do with your code but by a driver or runtime so you should get away with ignoring them, more information here: http://www.gamedev.net/topic/596986-kernelbasedll-microsoft-c-exception-com-error-at-memory-location-0x0021e7dc/

4. So a thread will be created when your application is created/loaded and destroyed when your application closes, the OS kernel manages this so don't worry about it. It's a bit of a big topic but if you are interested in knowing more do a google search for how OS kernels work and how they manage threads, context switches and cores etc.

I hope that helps :)

1.PDB files contain "debug symbols", i.e. information about the program that is useful for debugging, such as what line of source code corresponds to each potential breakpoint position. Visual Studio produces them wherever it builds a project in debug mode, then looks for them in various search paths (chiefly in the build output path where you compiled your program or in the same folder as the executable) as it loads DLLs.

Your log says:


'Crealysm11.exe' (Win32): Loaded 'E:\projects\Crealysm11\Debug\Crealysm11.exe'. Symbols loaded.

This means that, while debugging process Crealysm11.exe, executable E:\projects\Crealysm11\Debug\Crealysm11.exe was loaded and it had a matching PDB file, as can be expected for something you just compiled in debug mode.

All "errors" that follow are for basic Windows DLLs your program depends on; they don't have PDB files, but Visual Studio has other means to get the corresponding debug symbols.

In practice, you are likely to have trouble with missing PDB files only because of simple but not necessarily remediable mistakes in what you attempt to debug:

  • DLLs that you copied or downloaded from somewhere without their PDB file
  • DLLs that you compiled in release mode
  • DLLs that lost their PDB file because you compiled them but you skipped some deployment step (e.g. copying into the GAC): the loaded version is older than the unused one with a valid PDB file.

The worst that can happen is being unable to set breakpoints and see source code in those parts of the program while debugging.

Omae Wa Mou Shindeiru

Thanks both.

@LorenzoGatti: I don't have either of these 3 situations, so I think I should be OK

Crealysm game & engine development: http://www.crealysm.com

Looking for a passionate, disciplined and structured producer? PM me

This topic is closed to new replies.

Advertisement