Am 10.09.2008 um 17:32 schrieb Stefan Dösinger:
You can attach any debugger to a Win32 process running in Wine. This includes Linux debuggers like gdb, [...]
As I didn't find hints on how to do this I tried myself:
** First, start gdb in the C: directory
mah@piccard:/otherubuntu/home/mah/.wine/drive_c$ gdb GNU gdb 6.8-debian Copyright [...] This GDB was configured as "x86_64-linux-gnu". (gdb) file wine Reading symbols from /usr/local/bin/wine...done. (gdb) directory /otherubuntu/home/mah/wine/ Source directories searched: /otherubuntu/home/mah/wine:$cdir:$cwd (gdb)
** Then, run the app
(gdb) run windows/notepad.exe Starting program: /usr/local/bin/wine windows/notepad.exe [Thread debugging using libthread_db enabled] [New Thread 0xf7c628c0 (LWP 793)] [New Thread 0xf7c61b90 (LWP 796)] [Thread 0xf7c61b90 (LWP 796) exited] [New process 793] Executing new program: /usr/local/bin/wine-preloader warning: Cannot initialize thread debugging library: generic error warning: Cannot initialize thread debugging library: generic error [New process 793] Fontconfig warning: "/etc/fonts/conf.d/53-monospace-lcd-filter.conf", line 17: invalid constant used : lcdlegacy Fontconfig warning: "/etc/fonts/conf.d/53-monospace-lcd-filter.conf", line 17: invalid constant used : lcdlegacy Fontconfig warning: "/etc/fonts/conf.d/53-monospace-lcd-filter.conf", line 17: invalid constant used : lcdlegacy
** Notepad should be running here. Interrupt it from the command line to have a look:
^C Program received signal SIGINT, Interrupt. 0xf7fec430 in ?? () (gdb) bt #0 0xf7fec430 in ?? () #1 0x00000008 in ?? () #2 0x7bc76516 in ?? () #3 [...] (gdb) list 1 /* 2 * Preloader for ld.so 3 * 4 * Copyright (C) [...]
As you see, listing appears to work in principle, while symbol lookup doesn't.
It's no secret Wine runs multiple processes and Windows applications run multiple threads, so you might want to look up how to handle this in gdb:
http://sources.redhat.com/gdb/current/onlinedocs/gdb_5.html
My tries to break not into the preloader, but the actual Windows application weren't successful so far, gdb's console appears to lock up somehow when setting follow-fork-mode & friends.
MarKus
- - - - - - - - - - - - - - - - - - - Dipl. Ing. Markus Hitter http://www.jump-ing.de/