首页 > 解决方案 > 如何使用 gdb 启动守护进程

问题描述

我已经看到了一些通过查询守护进程 PIDps aux并将其附加到 gdb 的示例。

但是,我有一个机器人正在运行我编写的程序,而在某些时候,程序会冻结。我已经用尽了正常调试它的尝试。

所以我需要附加一个 gdb 实例 - 当机器人不在时。我没有选择使用 LTE,然后在它运行时反向 ssh,它没有无线。对于以太网 - 它距离我站立的地方有几公里。所以我需要:

  1. 用程序作为守护进程启动我的进程,这是一个要求(即当机器人重新启动时,程序启动)
  2. 将 GDB 实例附加到它,而无需访问机器人(无屏幕、键盘……等)
  3. 记录 GDB 的所有输出

考虑到这一点,我在守护程序文件 myservice.service 中进行了尝试:

ExecStart="gdb --exec=/path/to/file /path/to/inputfile.txt --eval-command=run" &

这不起作用。结果是(之后systemctl status myservice,我们看到:)

myservice.service - my service
Loaded: error (Reason: Invalid argument)
Active: inactive (dead

所以,任何帮助将不胜感激。谢谢你。

PS:我的服务是C++编写的,使用重串口通信,使用大疆OSDK与A3飞控通信,运行在树莓派零上。

标签: c++debugginggdbfreeze

解决方案


推荐阅读