日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

调试与分析

發布時間:2023/11/29 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 调试与分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、獲取內核轉儲

大多數Linux發行版默認關閉內核轉儲功能,可使用 ulimit -c 查看,-c 表示內核轉儲文件的大小限制,如果為0,表示未開啟。

1、可設置為 ulimit -c unlimited 表示無限制,或設置為其它數值,單位是字節,立即生效。

2、修改?/etc/security/limits.conf 文件,重啟后生效。

開啟該功能后,當程序異常終止時,會在當前目錄下生成 core.pid ?的內核轉儲文件。通過 ?gdb -c core.pid ?./a.out ?就可以啟動調試。

修改 coredump 的路徑和格式:

1、修改配置文件/etc/sysctl.conf (重啟后生效,也可以使用 sysctl -p 命令使其立即生效),如:

kernel.core_pattern = core kernel.core_uses_pid = 0  #是否給 core 文件增加 pid 值的后綴名,為 1 表示增加,為 0 表示不增加

2、使用命令直接改寫內存(可立即生效,但重啟后失效),如:

echo "core" > /proc/sys/kernel/core_pattern echo "0" > /proc/sys/kernel/core_uses_pid

注:core_pattern 可以設置為 ?/var/core/%e_%t.core ,從而定制了 core 文件的統一路徑和命令規則(%e:執行文件名稱;%t:產生 core 文件時間戳)

?

?

二、gdb 附加到正在運行的進程

attach pid ,調試完之后,使用 detach 即可以和進程分離。

?

?

加上 -g 選項編譯生成的可執行文件(如 a.out),運行后在掛掉時,會向 /var/log/message 文件中寫入地址信息(即 IP 指向的值,如 40052e?),通過 addr2line -e a.out 40052e 就可以輸出錯誤發生在哪個文件的哪一行中。注:如果沒有向?/var/log/message 寫入信息,請查看 syslog 服務有沒有啟動,CentOS6.4 下,需要 /etc/init.d/rsyslog restart

?

?

?

?

?

?

gcc -pg test.cpp -o test  //編譯和鏈接時都需要加上 -pg 參數

./test  //生成 gmon.out 文件

wget http://gprof2dot.jrfonseca.googlecode.com/git/gprof2dot.py      

wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.34.0.tar.gz  

gprof ./test gmon.out >report.txt  //生成報告文件

gprof2dot report.txt > test.dot    //生成 dot 文件

dot test.dot -Tpng -o test.png    //將 dot 文件生成圖片

?

?

?

轉載于:https://www.cnblogs.com/tianyajuanke/p/3374953.html

總結

以上是生活随笔為你收集整理的调试与分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。