the Fiddler's picture

gDEBugger is now free!

gDEBugger is the most advanced OpenGL debugger for Windows/Mac OS X/Linux/iPhone currently in existence. It used to be quite pricey (in the 4-digit area) but the desktop version is now available for free - which is awesome news for OpenGL developers!

More information and downloads at:


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
swiftcoder's picture

Has anyone had any success using gDEBugger with OpenTK? I have had the educational license for some time, and I wasn't able to get it to recognise an OpenTK application. It starts ok, but it can't seem to intercept any of the OpenGL calls...
Tristam MacDonald - swiftcoding

pjcozzi's picture

I am running into the same problem here. I also had to target x86 instead of Any CPU in order to gDEBugger to launch my application.

Virtual Globe and Terrain Rendering Blog

c2woody's picture

and I wasn't able to get it to recognise an OpenTK application.

What didn't work exactly? Be sure to use the latest version, and check that you've selected the right context.

pjcozzi's picture
c2woody wrote:

What didn't work exactly? Be sure to use the latest version, and check that you've selected the right context.

I tried the latest version of gDEBugger with an OpenTK application using a GL 3.2 context. It launches my application and shows "DLL Loaded" and "Threaded Created" messages in the "Debugged Process Events" window, but that is all I get. No other gDEBugger windows show anything, even if I pause.

Have you had success with gDEBugger and OpenTK?

Virtual Globe and Terrain Rendering Blog

c2woody's picture

Yes it works for me, I've tested the latest version using the free license file and an OpenTK application compiled for the x86 target, using OpenGL 2.x as well as a 3.0-only profile (switchable). Both work fine, so did it as x64 application some time ago.

Be sure you copy the spies (opengl32.dll from the spies directory or spies64, they serve as intercepting instance) into your application directory. Also check that the selectable thread and context are set correctly (they are correct for my application in the latest gDebugger version).

pjcozzi's picture

Thanks! Copying opengl32.dll from the spies directory to my application's directory did the trick.

It reports all sorts of interesting information, and I love how it lets you edit and recompile/link shaders! It isn't very stable though, at least on my ATI card. I'm going to try it on my NVIDIA laptop too.

Thanks again,

Virtual Globe and Terrain Rendering Blog

c2woody's picture

This is actually hidden in their FAQ:

but it's not obvious IMO and maybe on the OpenTK docs/homepage there's some additional place to add information about this.

I've found it to be rather stable most of the time, and even if it has some instabilities I'm amazed that something like gDEBugger exists at all. It's still hard, even with this tool, (at least for me) to figure out where to optimize OpenGL code.

pjcozzi's picture

I ran into a lot of instability with my ATI card, but gDEBugger was perfectly stable on my NVIDIA card, admittedly, I didn't bang on it as much.

I agree it would be useful to post the spies information somewhere.

Virtual Globe and Terrain Rendering Blog

kwaegel's picture

Anyone try using gDEBugger with both OpenTK and Cloo yet? One of the big changes in the new version was OpenCL support.

I keep intending to try this setup but haven't found the time yet.

[Edit] I tried it and it works. You just need to copy the contents of the spies directory into your project output folder.

Cifram's picture

A little late to the party on this, perhaps... But I can't get gDEBugger to work with my OpenTK application. The Debugged Process Events panel shows this:

Process Created:  Genesis.exe
Thread Created: 1984
DLL Loaded: C:\Windows\system32\ntdll.dll
DLL Unloaded: N/A
DLL Unloaded: N/A
DLL Unloaded: N/A
DLL Unloaded: N/A
DLL Loaded: C:\Windows\SysWOW64\MSCOREE.DLL
DLL Loaded: C:\Windows\syswow64\KERNEL32.dll
DLL Loaded: C:\Windows\syswow64\KERNELBASE.dll
DLL Loaded: C:\Windows\syswow64\ADVAPI32.dll
DLL Loaded: C:\Windows\syswow64\msvcrt.dll
DLL Loaded: C:\Windows\SysWOW64\sechost.dll
DLL Loaded: C:\Windows\syswow64\RPCRT4.dll
DLL Loaded: C:\Windows\syswow64\SspiCli.dll
DLL Loaded: C:\Windows\syswow64\CRYPTBASE.dll
DLL Loaded: C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscoreei.dll
DLL Loaded: C:\Windows\syswow64\SHLWAPI.dll
DLL Loaded: C:\Windows\syswow64\GDI32.dll
DLL Loaded: C:\Windows\syswow64\USER32.dll
DLL Loaded: C:\Windows\syswow64\LPK.dll
DLL Loaded: C:\Windows\syswow64\USP10.dll
DLL Loaded: C:\Windows\SysWOW64\IMM32.DLL
DLL Loaded: C:\Windows\syswow64\MSCTF.dll
DLL Loaded: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
DLL Loaded: C:\Windows\SysWOW64\MSVCR100_CLR0400.dll
Thread Created: 8112
DLL Loaded: C:\Windows\assembly\NativeImages_v4.0.30319_32\mscorlib\44ae9f9afb2373055136d57ac6db3f96\
DLL Loaded: C:\Windows\Microsoft.NET\Framework\v4.0.30319\nlssorting.dll
DLL Loaded: C:\Windows\syswow64\ole32.dll
DLL Loaded: C:\Users\Public\Dropbox\Projects\mono\genesis\Genesis\bin\Debug\OpenTK.dll
DLL Loaded: C:\Users\Public\Dropbox\Projects\mono\genesis\Genesis\bin\Debug\OpenTK.dll
DLL Unloaded: C:\Users\Public\Dropbox\Projects\mono\genesis\Genesis\bin\Debug\OpenTK.dll
DLL Loaded: C:\Windows\SysWOW64\CRYPTSP.dll
DLL Loaded: C:\Windows\SysWOW64\rsaenh.dll
Thread Created: 3852
Thread Created: 4948
DLL Loaded: C:\Windows\SysWOW64\VERSION.dll
DLL Loaded: C:\Windows\assembly\NativeImages_v4.0.30319_32\System\2c59490afc22def906d3ca96e1207ff9\
DLL Loaded: C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Drawing\aa90407cafb9b4a0dc5e3fdff170fee9\
DLL Loaded: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clrjit.dll
Thread Created: 4316
DLL Loaded: C:\Windows\SysWOW64\uxtheme.dll
DLL Loaded: C:\Windows\SysWOW64\Winmm.dll
DLL Loaded: C:\Windows\SysWOW64\DINPUT.DLL
DLL Loaded: C:\Windows\SysWOW64\HID.DLL
DLL Loaded: C:\Windows\syswow64\SETUPAPI.DLL
DLL Loaded: C:\Windows\syswow64\CFGMGR32.dll
DLL Loaded: C:\Windows\syswow64\OLEAUT32.dll
DLL Loaded: C:\Windows\syswow64\DEVOBJ.dll
DLL Loaded: C:\Windows\syswow64\WINTRUST.dll
DLL Loaded: C:\Windows\syswow64\CRYPT32.dll
DLL Loaded: C:\Windows\syswow64\MSASN1.dll
Thread Created: 6788
Thread Created: 2752
DLL Loaded: C:\Windows\SysWOW64\dwmapi.dll
DLL Loaded: C:\Windows\SysWOW64\OPENGL32.DLL
DLL Loaded: C:\Windows\SysWOW64\GLU32.dll
DLL Loaded: C:\Windows\SysWOW64\DDRAW.dll
DLL Loaded: C:\Windows\SysWOW64\DCIMAN32.dll
DLL Loaded: C:\Windows\SysWOW64\nvoglv32.DLL
Thread Created: 5076
Thread Created: 968
Thread Terminated: 968
Thread Created: 8156
Thread Created: 4252
Thread Terminated: 8156
Thread Created: 180
Thread Terminated: 4252
DLL Loaded: C:\Windows\SysWOW64\ole32.dll
DLL Unloaded: C:\Windows\SysWOW64\ole32.dll
DLL Loaded: C:\Users\Public\Dropbox\Projects\mono\genesis\Genesis\bin\Debug\QuickFont.dll
DLL Loaded: C:\Users\Public\Dropbox\Projects\mono\genesis\Genesis\bin\Debug\QuickFont.dll
DLL Unloaded: C:\Users\Public\Dropbox\Projects\mono\genesis\Genesis\bin\Debug\QuickFont.dll
DLL Loaded: C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Core\7292b3e639a6202cf7eaf1f7ed271249\
DLL Loaded: C:\Windows\Microsoft.NET\Framework\v4.0.30319\diasymreader.dll
Second Chance Exception

And the Calls Stack panel shows:

RaiseException - KERNELBASE.dll
GetCLRFunction - clr.dll
GetCLRFunction - clr.dll
0x62833de0 -
0x62876caa -
0x62873f2a -
0x628b199f -
0x62846cd0 -
0x62845015 -
0x0585243b - 
LogHelp_TerminateOnAssert - clr.dll
LogHelp_TerminateOnAssert - clr.dll
LogHelp_TerminateOnAssert - clr.dll
0x665621ba - clr.dll
LogHelp_TerminateOnAssert - clr.dll
LogHelp_TerminateOnAssert - clr.dll
LogHelp_TerminateOnAssert - clr.dll
LogHelp_TerminateOnAssert - clr.dll
SetRuntimeInfo - clr.dll
SetRuntimeInfo - clr.dll
SetRuntimeInfo - clr.dll
SetRuntimeInfo - clr.dll
SetRuntimeInfo - clr.dll
CorExeMain - clr.dll
CorExeMain - mscoreei.dll
CreateConfigStream - MSCOREE.DLL
RtlInitializeExceptionChain - ntdll.dll

So I'm facing the incredibly uninformative error "Second Chance Exception". Web searches show that this exception occurs a lot with gDEBugger, but it always seems to have different causes, leading me to suspect that this is a sort of catch-all exception. So the only potentially useful hints I see are that the last thing it loaded was daisymreader.dll, and the error appears to have happened in KERNELBASE.DLL, which is a rather scary-sounding place to have an exception raised from.

I did copy over the appropriate "spy" version of OpenGL32.dll, and it didn't make a difference. Any ideas what else might be causing this? Note that the application runs fine on it's own, or in the Visual C# debugger.