GDB:未知目标异常



尝试使用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

相关内容

最新更新