Linux 下一些调试工具汇总

trace-cmd - interacts with Ftrace Linux kernel internal tracer

trace-cmd 以交互式的方式用来追踪内核函数,它是 Ftrace 的前端。
使用请参考:

kernelshark - graphical reader for trace-cmd(1) output

kernelshark 用来图形化的显示 trace-cmd 的输出结果。
使用请参考:

strace - trace system calls and signals

strace是一个用于Linux的诊断、调试的用户空间工具。它可以用来查看和修改进程与Linux内核之间的交互行为,其中包括系统调用、信号传递和进程状态。
使用参考:

gcore - Generate a core file of a running program

可以生成正在运行的程序的core文件,这个core 文件与程序崩溃时生成的 core 文件一致,但是使用 gcore 不会影响原程序的运行。

sudo gcore {pid}

gdb - The GNU Debugger

下面的步骤可用来查看运行的进程的栈帧信息。

$ sudo gdb
(gdb) attach {pid}
(gdb) info threads
(gdb) thread apply all bt
(gdb) p mutex1
(gdb) detach

比如,如果出现 deadlock,会出现如下信息:

Thread 0x7f4a8303b700 (LWP 3790) "a.out" __lll_lock_wait (
    futex=futex@entry=0x55c928122080 <mtx2>, private=0) at lowlevellock.c:52

gprof - display call graph profile data

Gprof是一个性能分析程序,用来收集和整理程序的统计数据。它通过在每个函数的头部和尾部插入代码,以收集时间信息。当正常运行的程序时,它会创建包含原始数据的"gmon.out",然后 gprof 程序将其转化为统计数据进行展示。

使用步骤如下

  1. 添加 -pg 的编译选项
  2. 运行一次程序
  3. 生成统计数据
gcc -pg test.c -o test
./test
gprof test gmon.out > analysis.txt

注:如果不先运行一次程序,就会出现如下错误: gmon.out no such file or directory。因为只有程序运行后才会产生 gmon.out。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lylhw13_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值