当尝试使用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添加到路径环境变量中,键入mount并获得
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)
当我输入show configuration get
时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运行,我正在调试的程序将启动。
我应该检查哪些其他内容?
答案 0 :(得分:0)
我遇到了同样的问题。我也在Vista上使用x86和eclipse mars.2,默认情况下,gdb 7.10是通过setup下载的。我也尝试过所有尝试无济于事的事。
最后,我注意到下面的链接并将gdb升级到7.11并解决了问题。
答案 1 :(得分:0)
这是一个特殊的技术例外,它将线程名称传达给支持的调试器(Delphi RAD Studio,Visual Mess等)。在调试器中查看线程列表并通过查看名称了解正在发生的事情非常方便。线程抛出此异常并立即捕获它,而在处理程序中什么也不做。在最近引入SetThreadName之前,它是设置线程名称的唯一常用方法。 SetThreadName是Unicode,但尚未广泛支持SetThreadName,因此许多库都使用受支持的方法。可以是IME,OLE,只要生成线程即可。
我想,gdb不知道这两种方法。只需忽略此异常即可。