20231027——调试工具学习
一般常用的调试工具gdb。
glib库支持DTrace和systemtap追踪,为了更好的开发稳定应用程序,所以学习DTrace和SystemTap。
1 systemtap
SystemTap是一个Linux非常有用的调试(跟踪/探测)工具,常用于Linux内核或者应用程序的信息采集。
比如:获取一个函数里面运行时的变量、调用堆栈,甚至于直接修改变量的值,对诊断性能或功能问题非常有帮助。SystemTap提供非常简单的命令行接口和很简洁的脚本语言,以及非常丰富的tapset和例子。
1.1 用途
-
定位(内核)函数位置
-
查看函数被调用时的调用堆栈、局部变量、参数
-
查看函数指针变量实际指的是哪个函数
-
查看代码的执行轨迹(哪些行被执行了)
-
查看内核或者进程的执行流程
-
调试内存泄露或者内存重复释放
-
统计函数调用次数
……
sudo stap ./test.stp
报以下错误
这里不能用sudo apt-get install systemtap
去安装, 因为这样安装的是4.2版本的, 不支持这个内核, 除非更改为其他linux内核才行
我们这里下载4.9的源码包去安装
下载地址:
https://sourceware.org/systemtap/ftp/releases
我没有安装内核debug symbols(dbgsym),暂时不需要Debug内核。目前,只是测试glib库内存申请和释放。
export LD_LIBRARY_PATH=/usr/local/glib-2.76.6/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
项目测试目录 /assets/rizhimanlu/20231027/