I've noticed something very frustrating. When a Windows program GPFs, it gives that infamous window where you can get details (which is VERY useful for programming to find out where and eventually why your program faulted). However, in DirectX, Windows just kicks out of the progam and does nothing. Is there any way to debug a DirectX program in full screen mode short of trying to go through the program instruction by instruction?
well one way is to place messagebox's call with vars and stuff in the offending code (take care to release the DirectX object first so msg will pop up on screen) second way is to get dbgwiew.exe form system_internals web page that proggy shows debugger messages and history so u can see things after your program dies... just place calls to OutputDebugStringA and make a function to do OutputDebugValue :)
I far prefer dos boxes for degugging info. Most pregrams may be built as a console app, even if the app is a windows app. You get both, a dos box and your app. Alternatively, start the program from a dos box, then the debug info may be piped to a text file and later read. Finally, if a dos box isn't possible, I write directly to a text file. I keep a bunch of macros to do this inside an .inc file so I can use it anytime.
Well, I already figured out the file output system (and use it considerably in my programs), but that's not at all what I meant. I'm not about to put 50 lines of text in an output file every Vertical Blank just because I have to output data from four or more routines! (Sorry guys...I tried that once. The output file was more than 100KB, hundreds of lines long, and still didn't give me what I needed!) What I was looking for was a way to test the program, and get the exact IP that faults, like Windows GPF windows so graciously give out.
@rasco: if you want to get the exact ip you might try the following: set up a new top-level exception handler via SetUnhandledExceptionFilter and let the filter function output the ip (located in the context structure) to a textfile or something.