程序接收信号SIGTRAP,跟踪/断点陷阱。 [切换到主题6]

时间:2017-12-06 15:38:03

标签: c gdb remote-debugging

我知道之前已经问过这个问题,但我已经阅读了所有帖子,但我没有找到答案。 从我执行run开始调试我的项目的那一刻起,我得到了这个:Program received signal SIGTRAP, Trace/breakpoint trap. [Switching to Thread 6]。当我ctrl+c时,gdb告诉我:Program received signal SIGINT, Interrupt. 0x00000000 in ?? ()

通常它会告诉我哪个文件以及哪个函数在不0x00000000 in ?? ()时被中断了 GDB不再遇到断点,而且让事情变得更加疯狂的是,我和同事正在共享相同的会话(使用cygwin和远程计算机完成调试)并且它适用于他们但不适合我。 当我尝试使用info threads获取有关线程的信息时,我得到的是:

[New Thread 20]
 [New Thread 21]
 [New Thread 22]
  Id   Target Id         Frame
  4    Thread 22 (ssp=0xa9004d5c) 0x00000000 in ?? ()
  3    Thread 21 (ssp=0xa9002e64) 0x00000010 in ?? ()
  2    Thread 20 (ssp=0xa9000ef4) 0x00000000 in ?? ()

The current thread <Thread ID 1> has terminated.  See `help thread'

没有线程6,没有*来指示gdb正在使用哪个线程。而且我甚至不知道这是否与问题有关。 有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

实际上,这与您的other question重复。

正如我在那里的评论中所说,你没有提供几乎足够的信息来帮助你。详细信息重要,您正在扣留它们。 GDB和gdbserver的版本很重要,你如何调用GDB和gdbserver,从GDB(如果有的话)收到什么警告。

现在,此错误消息:

curl_setopt($ch, CURLOPT_FILE, $stream_resource);

通常意味着gdbserver没有附加进程的一个线程,并且该线程已经尝试执行断点指令(在发生这种情况之前确实设置了断点,不是吗?)。

可能发生这种情况的原因之一是当您的GDB加载&#34;错误&#34; Program received signal SIGTRAP, Trace/breakpoint trap. [Switching to Thread 6] (与目标libthread_db.so不匹配的人。)

  事情变得更加疯狂的事实是,我和一位同事正在共享相同的会话(调试是使用cygwin和远程机器完成的),它对他们来说很好但不适合我。

我不确定你的意思是&#34;同一个会话&#34;,但它可能不是&#34;当他输入命令时,它们起作用;但是当我在相同的GDB中键入相同的命令时,他们不会#34;

您和您的同事之间的一个区别可能是libc.so.6环境变量设置。另一个可能在LD_LIBRATY_PATH~/.gdbinit

我建议运行./.gdbinit以摆脱后者,并取消设置gdb -nx以摆脱前者。

答案 1 :(得分:0)

整件事的问题由于某种原因没有人注意到这是: 这就是我如何调用gdb /usr/local/build/gdbx.y/gdb/gdb我应该做的是:/usr/local/build/gdbx.y/build/gdb/gdb 这是一个路径问题。