Exception gdb:未知目标异常

Exception gdb:未知目标异常,exception,gdb,Exception,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 () f

当尝试使用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)未设置path环境变量,(2)未映射驱动器,(3)使用了错误的gdb版本(32位或64位)。因此,我将C:\cygwin\bin添加到path环境变量中,键入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本身似乎可以工作,例如,我可以键入watch,后跟一个地址,它将设置一个watchpoint;gcc和g++工作得很好,如果我从命令行而不是从gdb运行它,我正在调试的程序将启动


我还应该检查哪些东西?

我也有同样的问题。我还在Vista上使用带有EclipseMars.2的x86,默认情况下,安装程序下载了GDB7.10。我也试过了所有你试过的都没有用

最后,我注意到下面的链接并将gdb升级到7.11,问题得到了解决


我也有同样的问题。我还在Vista上使用带有EclipseMars.2的x86,默认情况下,安装程序下载了GDB7.10。我也试过了所有你试过的都没有用

最后,我注意到下面的链接并将gdb升级到7.11,问题得到了解决


这是一个特殊的技术异常,它将线程名称传递给支持调试器(Delphi RAD Studio、Visual Mess等)。查看调试器中的线程列表并通过查看名称了解正在发生的事情是很方便的。线程抛出这个异常并立即捕获它,在处理程序中什么也不做。在最近引入SetThreadName之前,它是设置线程名称的唯一常用方法。SetThreadName是Unicode,但SetThreadName还没有得到广泛支持,所以许多库使用受支持的方法。它可以是IME、OLE或任何产生线程的东西


我想,gdb对这两种方法都不了解。忽略此异常。

这是一个特殊的技术异常,它将线程名称传递给支持调试器(Delphi RAD Studio、Visual Mess等)。查看调试器中的线程列表并通过查看名称了解正在发生的事情是很方便的。线程抛出这个异常并立即捕获它,在处理程序中什么也不做。在最近引入SetThreadName之前,它是设置线程名称的唯一常用方法。SetThreadName是Unicode,但SetThreadName还没有得到广泛支持,所以许多库使用受支持的方法。它可以是IME、OLE或任何产生线程的东西


我想,gdb对这两种方法都不了解。忽略此例外情况。

谢谢您的回复。我使用其他调试技术修复了bug,但我会注意到这一点以供将来使用。我现在不想安装另一个版本的gdb,因为我不想像过去那样不经意地破坏我的Cygwin版本。谢谢你的回复。我修好了程序错误,但是我会注意到这一点,以备将来使用。我现在不想安装另一个版本的gdb,因为我不想像过去那样不经意地破坏我的Cygwin构建。