为什么gdb不适合我

时间:2017-02-15 11:47:22

标签: c++ cmake gdb ros tui

背景

我目前正在尝试使用运行 Ubuntu MATE 16.04 LTS Rapsberry Pi 上的 ROS 构建自主无人机。解决现在识别红圈的计算机视觉问题。

具体问题

我不断收到this问题中的错误。为了帮助我解决这个问题,我决定使用gdb。但是,命令rosrun --prefix 'gdb run --args' zlab_drone vdstab似乎对我不起作用。 zlab_drone是包的名称,vdstab是我尝试运行的可执行文件的名称。由于这是在ROS环境中,我已经从here获取了语法,并使用了this question中的建议。

当我调用此命令时,即使使用tui,我也会得到一个SIGSEGV,当我在list内部调用gdb时,该程序不会停留在特定的指向并保持列出不同的行,直到超出范围。这是一个非常奇怪的问题。

我估计,通过使用不同的命令,我设法让它在没有这个问题的情况下工作。我不记得上次我是如何工作的。

2 个答案:

答案 0 :(得分:0)

嗯,在你提到的link中,它明确指出你应该使用:

launch-prefix="xterm -e gdb --args" : run your node in a gdb in a separate xterm window, manually type run to start it

或:

launch-prefix="gdb -ex run --args" : run your node in gdb in the same xterm as your launch without having to type run to start it  

所以,看起来你错过了 -ex 作为评论中的@ ks1322 suggeseted,或者只需输入运行来启动调试过程。

答案 1 :(得分:0)

我发现了this与Raspberry Pi完全相关的独家错误。基本上,解决方案包括,正如彼得班纳特所引用的那样:

  

有一种解决方法。启动程序,然后从另一个命令启动   提示或从ssh远程登录,使用gxx -p xxxxx,其中xxxxx是   流程编号。这没有崩溃。如果你需要调试   在你可以从另一个命令进入之前发生的事情   提示,向程序添加一个停止进程的命令   主要的开始,例如对get的调用,它将等待你   在继续之前按Enter键。