我知道之前已经问过这个问题,但我已经阅读了所有帖子,但我没有找到答案。
从我执行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正在使用哪个线程。而且我甚至不知道这是否与问题有关。
有人可以帮帮我吗?
答案 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
这是一个路径问题。