加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

如何在Linux中调试正在运行的C程序?

发布时间:2020-12-13 19:19:30 所属栏目:Linux 来源:网络整理
导读:我有一个关于在 Linux中调试正在运行的C程序的问题.如果编程已经在运行且无法中断,那么该怎么做. 我可以找到三种方法,但我对细节知之甚少,如果任何人能够更深入地阐述它,我将不胜感激. 1)我们可以通过指定进程ID来使用GDB gdb -p PID 在这种情况下,这个和附
我有一个关于在 Linux中调试正在运行的C程序的问题.如果编程已经在运行且无法中断,那么该怎么做.

我可以找到三种方法,但我对细节知之甚少,如果任何人能够更深入地阐述它,我将不胜感激.

1)我们可以通过指定进程ID来使用GDB

gdb -p PID

在这种情况下,这个和附加PID有什么区别?

2)我们可以使用pstat,但是,我使用的是Ubuntu,没有pstat,只有mpstat

似乎mpstat没有提供太多的信息,也没有太多的选择.

3)检查目录./proc下的详细信息

在这种情况下,只需转到带有PID的目录.但是,这应该是手动完成吗?

解决方法

我在gdb man或他们的文档中找不到-p选项,但它确实有效!我在RedHat和Debian上的7.0.1上使用旧版本尝试了很多次.

我不确定它是如何通过PID找到exe(也许是/ proc /< PID> / exe),但它确实如此.由于它没有在他们的文档中描述,也许它不是最推荐的方式,但我没有遇到任何问题.

gdb -p< PID>之间没有明显的区别.并运行gdb并在其shell中键入attach< PID>.

我个人更喜欢ps xa |获取PID的grep myprogram

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读