尝试使用GDB运行程序时
[New Thread 4612.0x158c]
[New Thread 4612.0x1cb8]
[New Thread 4612.0x11e8]
[New Thread 4612.0x1190]
gdb: unknown target exception 0x406d1388 at 0x746623d2
Program received signal ?, Unknown signal.
0x746623d2 in RaiseException () from /cygdrive/c/WINDOWS/System32/KERNELBASE.dll
我研究了这一点,发现了三个可能的原因:(1)未设置路径环境变量,(2)未映射驱动器,以及(3)使用GDB(32位或64位)的错误版本。所以我在路径环境变量中添加了C: cygwin bin,打字
C:/cygwin/bin on /usr/bin type ntfs (binary,auto)
C:/cygwin/lib on /usr/lib type ntfs (binary,auto)
C:/cygwin on / type ntfs (binary,auto)
C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,auto)
D: on /cygdrive/d type ntfs (binary,posix=0,user,noumount,auto)
当我输入显示配置时
This GDB was configured as follows:
configure --host=i686-pc-cygwin --target=i686-pc-cygwin
--with-auto-load-dir=$debugdir:$datadir/auto-load
--with-auto-load-safe-path=$debugdir:$datadir/auto-load
--with-expat
--with-gdb-datadir=/usr/share/gdb (relocatable)
--with-jit-reader-dir=/usr/lib/gdb (relocatable)
--without-libunwind-ia64
--with-lzma
--with-python=/usr (relocatable)
--without-guile
--with-separate-debug-dir=/usr/lib/debug (relocatable)
--without-babeltrace
我的计算机是32位,所以它似乎是正确的版本。
GDB本身似乎有效,例如我可以键入手表,然后打一个地址,它将设置一个观察点;gcc和g 工作正常,如果我从命令行运行它,而不是从gdb进行调试的程序。
我还应该检查什么其他事情?
这是一个特殊的技术例外,将线程名称传达给支持调试器(Delphi Rad Studio,Visual Mess等)。查看调试器中的线程列表并通过查看名称的情况很方便。线程抛出了此例外,并立即抓住它,在处理程序中什么都不做。直到最近的setThreadName简介,这是设置线程名称的唯一常见方法。SetThreadName是Unicode,但setThreadName尚未得到广泛支持,因此许多库都使用了支持的方法。它可以是ime,ole,任何产生线程的东西。
我猜,GDB都不知道这两种方法。只需忽略这个例外。
我也有同样的问题。我还在Vista上使用Eclipse Mars.2使用X86,默认情况下,通过设置下载了GDB 7.10。我还尝试了所有您试图无济于事的。
最后,我注意到下面的链接并将GDB升级到7.11,并且问题已解决。
https://cygwin.com/ml/cygwin/2016-10/msg00243.html