I am trying to use gdb to debug mingw-w64 compiled 32 bit binary. However, gdb gives many warning and does not show any stack trace. How can i debug this process normally ?
Here are some relevant details :
--host=i686-w64-mingw32 --build=i686-pc-cygwin
flags were used with wxWidgets configure
.
ashish@DESKTOP-133N35M /cygdrive/c/Users/ashish/work/reachit
$ gdb program.exe
GNU gdb (GDB) (Cygwin 7.10.1-1) 7.10.1
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-pc-cygwin".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from program.exe...done.
(gdb) b ReachItButton::OnChar(wxKeyEvent&)
Breakpoint 1 at 0x734672: file binReach.cpp, line 49.
(gdb) r
Starting program: /cygdrive/c/Users/ashish/work/reachit/program.exe
[New Thread 6148.0x184]
warning: `/cygdrive/c/Windows/SYSTEM32/ntdll.dll': Shared library architecture i386:x86-64 is not compatible with target architecture i386.
warning: `/cygdrive/c/Windows/System32/wow64.dll': Shared library architecture i386:x86-64 is not compatible with target architecture i386.
warning: `/cygdrive/c/Windows/System32/wow64win.dll': Shared library architecture i386:x86-64 is not compatible with target architecture i386.
warning: dll path for "WOW64_IMAGE_SECTION" can not be evaluated
warning: Could not load shared library symbols for WOW64_IMAGE_SECTION.
Do you need "set solib-search-path" or "set sysroot"?
warning: dll path for "WOW64_IMAGE_SECTION" can not be evaluated
warning: Could not load shared library symbols for WOW64_IMAGE_SECTION.
Do you need "set solib-search-path" or "set sysroot"?
warning: dll path for "NOT_AN_IMAGE" can not be evaluated
warning: Could not load shared library symbols for NOT_AN_IMAGE.
Do you need "set solib-search-path" or "set sysroot"?
warning: dll path for "NOT_AN_IMAGE" can not be evaluated
warning: Could not load shared library symbols for NOT_AN_IMAGE.
Do you need "set solib-search-path" or "set sysroot"?
warning: `/cygdrive/c/Windows/System32/wow64cpu.dll': Shared library architecture i386:x86-64 is not compatible with target architecture i386.
[New Thread 6148.0x2b4]
[New Thread 6148.0x314]
[New Thread 6148.0x103c]
12:33:26: mylog In ReachItPanel :
12:33:28: mylog In ReachItButton.. onChar
gdb: unknown target exception 0x4000001f at 0x734672
Program received signal ?, Unknown signal.
0x0009dfe8 in ?? ()
(gdb) bt
#0 0x0009dfe8 in ?? ()
#1 0x00000000 in ?? ()
(gdb) q
A debugging session is active.
Inferior 1 [process 6148] will be killed.
Quit anyway? (y or n) y
ashish@DESKTOP-133N35M /cygdrive/c/Users/ashish/work/reachit
$
In config.log i have gcc/configue being given : -C --build=x86_64-pc-cygwin --host=x86_64-pc-cygwin --target=i686-w64-mingw32
/cygdrive/i/szsz/tmpp/cygwin64/mingw64-i686/mingw64-i686-gcc-5.4.0-4.x86_64/src/gcc-5.4.0/configure --srcdir=/cygdrive/i/szsz/tmpp/cygwin64/mingw64-i686/mi
ngw64-i686-gcc-5.4.0-4.x86_64/src/gcc-5.4.0 --prefix=/usr --exec-prefix=/usr --localstatedir=/var --sysconfdir=/etc --docdir=/usr/share/doc/mingw64-i686-gcc --htmldir=/usr/
share/doc/mingw64-i686-gcc/html -C --build=x86_64-pc-cygwin --host=x86_64-pc-cygwin --target=i686-w64-mingw32 --without-libiconv-prefix --without-libintl-prefix --with-sysr
oot=/usr/i686-w64-mingw32/sys-root --with-build-sysroot=/usr/i686-w64-mingw32/sys-root --disable-multilib --disable-win32-registry --enable-languages=c,ada,c++,fortran,lto,
objc,obj-c++ --enable-fully-dynamic-string --enable-graphite --enable-libgomp --enable-libquadmath --enable-libquadmath-support --enable-libssp --enable-version-specific-ru
ntime-libs --with-dwarf2 --with-gnu-ld --with-gnu-as --with-tune=generic --with-cloog-include=/usr/include/cloog-isl --with-system-zlib --enable-threads=posix --libexecdir=
/usr/lib
Gdb is 64 bit and binary is 32 bit. I can try with 64 bit binary but i am not sure why mingw-w64 g++ compiler is not generating 64 bit binary.
cygwin is 64 bit.
I have compiled binary with :
i686-w64-mingw32-g++ -ggdb -O0 binReach.cpp `wx-config --cxxflags
--libs std` -Wall -o program -static-libgcc -static-libstdc++ -Wl,
-Bstatic,-lstdc++,-lpthread -Wl,-Bdynamic
Use a 32 bit gdb for debugging from : http://www.equation.com/servlet/equation.cmd?fa=gdb
You have to download gdb for 32bit and 64bit separately. Because according to mingw-64's todo list, gcc multilib version is done,but gdb multilib version is still in progress,so you can't use single gdb to debug both 32bit and 64bit,you could use it maybe in the future.
User contributions licensed under CC BY-SA 3.0