title: Debugging 32 bit binary in cygwin windows compiled with mingw-w64
body: <p>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 ?</p>
  
  <p>Here are some relevant details :</p>
  
  <ul>
  <li>This GDB was configured as "x86_64-pc-cygwin".</li>
  <li>GNU gdb (GDB) (Cygwin 7.10.1-1) 7.10.1</li>
  <li>I am compiling wxWidgets library and building my program with it. But that should not be relevant to this question except that <code>--host=i686-w64-mingw32 --build=i686-pc-cygwin</code> flags were used with wxWidgets <code>configure</code>.</li>
  </ul>
  
  <p><code>
  ashish@DESKTOP-133N35M /cygdrive/c/Users/ashish/work/reachit</code></p>
  
  <pre><code>$ 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 &lt;http://gnu.org/licenses/gpl.html&gt;
  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:
  &lt;http://www.gnu.org/software/gdb/bugs/&gt;.
  Find the GDB manual and other documentation resources online at:
  &lt;http://www.gnu.org/software/gdb/documentation/&gt;.
  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&amp;)
  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
  $
  </code></pre>
  
  <p>In config.log i have gcc/configue being given : <code>-C --build=x86_64-pc-cygwin --host=x86_64-pc-cygwin --target=i686-w64-mingw32</code></p>
  
  <pre><code>/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
  </code></pre>
  
  <p>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.</p>
  
  <p>cygwin is 64 bit.</p>
  
  <p>I have compiled binary with :</p>
  
  <pre><code> 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
  </code></pre>