为什么 gdb 对我不起作用



背景

我目前正在尝试在我的 rapsberry pi 上使用 ros 构建自动无人机,该无人机正在运行 ubuntu mate 16.04 lts 。截至目前,解决了识别红色圈子的计算机视觉问题。

特定问题

我不断收到我在这个问题中遇到的错误。为了帮助我解决这个问题,我决定使用GDB。但是,命令rosrun --prefix 'gdb run --args' zlab_drone vdstab似乎对我不起作用。zlab_drone是软件包的名称,vdstab是我要运行的可执行文件的名称。由于这是在ROS环境中,因此我从这里抓住了语法,并在此问题中使用了这些建议。

当我调用此命令时,即使使用tui,我会得到SIGSEGV,并且当我在gdb本身中调用list时,该程序不会停留在特定点,并且会在其范围内列出不同的线路。这是一个很奇怪的问题。

我认为,我设法通过使用其他命令来使它起作用而没有这个问题。我只是不记得上次使它起作用了。

好吧,在您提到的链接中,它明显使用:

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在注释中建议使用的 @ks1322,或者只是键入 run 来启动调试过程。

我发现了与Raspberry Pi仅有关的独家错误。基本上,该解决方案涉及,如Peter Bennet所引用:

有解决方法。启动程序,然后从另一个命令开始 提示或从SSH远程登录中,使用GDP -P XXXXX其中xxxxx是 过程编号。这可以在没有崩溃的情况下起作用。如果您需要调试 在您可以从另一个命令中进入之前发生的事情 提示,将停止进程停止进程的命令添加到程序 主要的开始,例如打电话给获得的电话,这将等待您 在继续之前按Enter。

最新更新