繁体   English   中英

远程 GDB 检查点/分叉故障

[英]Remote GDB checkpoint/fork failure

我正在尝试在不支持没有检查点的情况下运行或重新启动的远程目标上进行调试。 唯一可用的用户是 root,所以不应该有任何权限问题。 我试过:

 Breakpoint 1, main (argc=4, argv=0x7fffffffe348) at foo.cpp:40
 (gdb) checkpoint
 checkpoint -1: fork returned pid 6145.
 Failed to find new fork
 (gdb) i checkpoints 
 No checkpoints.

有谁知道怎么去上班? 或者我如何检查以查看实际导致分叉失败并阻止检查点的原因?

经过一些实验,将以下内容添加到您的 .gdbinit 文件中

target extended-remote <host>:<port>

这应该允许您使用运行命令,而无需使用重新启动。

一旦你分叉你怎么能恢复检查点? 检查点会在某一时刻回退到进程保存的状态。 一旦分叉发生,我想检查点只会存在于原始进程中。

从手册中有这个条目:

最后,当您返回检查点时,有一点内部程序状态会有所不同——程序的进程 ID。 每个检查点都会有一个唯一的进程 id(或 pid),并且每个都将与程序的原始 pid 不同。 如果您的程序已保存其进程 ID 的本地副本,则这可能会造成问题。

关于需要使用检查点在远程会话上执行重新启动。 我以前从未使用过检查点,但我重新启动了许多远程会话。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM