gpt4 book ai didi

c++ - 使用 gdb 调试 linux 守护进程的初始启动

转载 作者:太空狗 更新时间:2023-10-29 22:56:19 26 4
gpt4 key购买 nike

我想调试在 linux (centos 7) 下作为服务启动的守护进程的初始启动。

我的服务启动为:“service mydaemon start”

我知道将 gdb 附加到正在运行的进程,但不幸的是,这种技术太慢了,mydaemon 的初始执行很重要。

mydaemon 是用 C++ 编写的,并且提供完整的调试信息。

最佳答案

unfortunately that technique is too slow

这个问题有两种通用的解决方案。

第一个描述here : 您让目标可执行文件等待 GDB 附加(这需要构建一个特殊版本的守护进程)。

第二个是在 gdbserver 中“包装”你的守护进程(作为 root):

mv mydaemon mydaemon.exe
echo > mydaemon <<EOF
#!/bin/sh
exec gdbserver :1234 /path/to/mydaemon.exe "$@"
EOF
chmod +x mydaemon

现在执行 service mydaemon start,您的进程将被 gdbserver 停止并等待来自 GDB 的连接。

gdb /path/to/mydaemon.exe
(gdb) target remote :1234
# You should now be looking at the mydaemon process stopped in `_start`.

此时您可以设置断点,并根据需要使用continuenextstep

关于c++ - 使用 gdb 调试 linux 守护进程的初始启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48452183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com