首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >程序接收信号SIGTRAP,跟踪/断点陷阱。[切换到线程6]

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

Stack Overflow用户
提问于 2017-12-06 15:38:03
回答 2查看 8.2K关注 0票数 0

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

通常,它会告诉我哪个文件和哪个函数在not 0x00000000 in ?? () GDB上被中断了,不再命中断点,更让人抓狂的是,我和一个同事共享同一个会话(调试是用一个远程机器使用cygwin完成的),它对它们很好,但对我来说不行。当我尝试使用info threads获取有关线程的信息时,下面是我得到的:

代码语言:javascript
复制
[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使用哪个线程的*。我甚至不知道这是否与问题有关。有人能帮帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-06 18:53:06

你没有提供足够的信息来帮助你。细节很重要,而你却隐瞒了它们。GDB和gdbserver的版本,如何调用GDB和gdbserver,从GDB (如果有的话)收到哪些警告。

现在,这个错误消息是:

代码语言:javascript
复制
Program received signal SIGTRAP, Trace/breakpoint trap. [Switching to Thread 6]

通常意味着gdbserver没有附加进程的一个线程,并且该线程试图执行断点指令(在此之前设置了断点,不是吗?)

出现这种情况的原因之一是当GDB加载“错误”的libthread_db.so (与目标libc.so.6不匹配)时。

让事情变得更疯狂的是,我和一位同事共享同一个会话(调试是用一台远程计算机使用cygwin完成的),这对他们来说很好,但对我来说不行。

我不知道您所说的“同一个会话”是什么意思,但它可能不是“当他键入命令时,它们就工作了;但是当我在同一个GDB中键入相同的命令时,它们就不起作用了”。

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

我建议运行gdb -nx以摆脱后者,取消LD_LIBRARY_PATH以消除前者。

票数 3
EN

Stack Overflow用户

发布于 2017-12-14 09:44:55

整件事情的问题在于,出于某些原因,似乎没有人注意到它是这样的:我就是这样命名gdb /usr/local/build/gdbx.y/gdb/gdb的,我应该做的是:/usr/local/build/gdbx.y/build/gdb/gdb,这是一个路径问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47678054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档