I'm trying to debug Wine, and I want to step into the BitBlt function using winedbg. I've set a breakpoint at BitBlt, and it is being hit, however, when I list the source code, it points somewhere completely differently in the source. I have no idea why that is. Does it mean that Wine is not setup correctly for debugging?
I cloned Wine from Git a few days ago, and I've used "./tools/wineinstall" to compile and install it.
This is an excerpt of the debugging session.
sashoalm@aspire:~$ winedbg /tmp/xformtest.exe WineDbg starting on pid 0022 start_process () at /home/sashoalm/Workspace/wine/wine-git/dlls/kernel32/process.c:1097 0x7b86235f start_process+0x5f [/home/sashoalm/Workspace/wine/wine-git/dlls/kernel32/process.c:1097] in kernel32: movl %edi,0x4(%esp) 1097 return call_process_entry( peb, entry ); Wine-dbg>break BitBlt fixme:dbghelp_dwarf:dwarf2_parse_subprogram Unhandled Tag type 0x1 at ctx(0x32bfec,L"gdi32<elf>"), for debug_info(abbrev:0x15f2148,symt:0x175a660) Breakpoint 1 at 0x7ebcac00 BitBlt in gdi32 Wine-dbg>cont Stopped on breakpoint 1 at 0x7ebcac00 BitBlt in gdi32 Wine-dbg>list 1097 return call_process_entry( peb, entry ); 1098 } 1099 1100 1101 /*********************************************************************** 1102 * set_process_name 1103 * 1104 * Change the process name in the ps output. 1105 */ 1106 static void set_process_name( int argc, char *argv[] ) 1107 { Wine-dbg>n copy_bitmap () at /home/sashoalm/Workspace/wine/wine-git/dlls/user32/cursoricon.c:382 382 DeleteDC( dst );
Hm, I just tried setting a breakpoint at RegOpenKeyExW, and it worked, the list command showed the correct code when the breakpoint was hit.
Also, I noticed that it shows the file/line number when I set a breakpoint on RegOpenKeyExW, but not for BitBlt. Why would that be?
Wine-dbg>break RegOpenKeyExW Breakpoint 2 at 0x7eb73920 RegOpenKeyExW [/home/sashoalm/Workspace/wine/wine-git/dlls/advapi32/registry.c:461] in advapi32 Wine-dbg>break BitBlt fixme:dbghelp_dwarf:dwarf2_parse_subprogram Unhandled Tag type 0x1 at ctx(0x32bfec,L"gdi32<elf>"), for debug_info(abbrev:0x15f2148,symt:0x175a660) Breakpoint 1 at 0x7ebcac00 BitBlt in gdi32