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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux下调试core dump方式汇总,工作必备技能

發布時間:2025/6/15 linux 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux下调试core dump方式汇总,工作必备技能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


緣起

調試,是開發流程中一個非常重要的環節。每個程序員都應,具備調試代碼的能力,尤其對于從事 Linux 下的開發的讀者。

從事 linux 下后臺開發,有時候會遇到程序突然崩潰的情況,也沒有任何日志,這會讓你不知所措。

今天給大家介紹一個 core 文件,用這個文件,我們可以找出對應出錯的代碼行,感覺是不是很神奇。
?

透著樹蔭看著朦朧的太陽,曬著日光浴,感覺還不錯。先學完這篇,我們再去欣賞風景。

?

什么是core dump

對于程序,由于各種異?;蛘?bug,導致在運行過程中,并且在滿足一定條件下,產生一個叫做 core 的文件。

通常情況下,core 文件會包含了,程序運行時的內存,寄存器狀態,堆棧指針,內存管理信息還有各種函數調用堆棧信息等。

許多程序出錯的時候,會產生一個 core 文件。通過工具分析這個文件,我們可以定位到,程序異常退出的時候對應的堆棧調用等信息。

打開 core dump 開關:ulimit -c unlimited

看一段有問題的代碼:

#include<stdio.h>int?main() {int?*p=NULL;*p=0;printf("bad\n");return?0; }

?

linux下編譯和執行:

[root@VM-16-9-centos?c++]#?g++?-g?main.cpp? [root@VM-16-9-centos?c++]#?./a.out? Segmentation?fault?(core?dumped) [root@VM-16-9-centos?c++]#?ls a.out??core.1989??main.cpp

上述代碼一看就有錯誤,執行會產生 core dump。但是在大型項目中,用肉眼就很難看了。下面說明一下 linux 下調試 core dump 方法。

?

dmesg+addr2line調試

先介紹 2 個 linux 命令:

dmesg ,一種程序,用于檢測和控制內核緩沖。程序用來幫助用戶,了解系統的啟動信息,可以獲得出錯堆棧地址。

addr2line ,可以將指令的地址和可執行映像轉換成文件名,函數名或源代碼的工具。這種功能將跟蹤地址轉換成更有意義的內容來說很有用。

在調用 addr2line 工具時,要使用 -e 選項來指定可執行映像,使用 -f 選項可以告訴工具輸出函數名。

linux下操作過程:

[root@VM-16-9-centos?c++]#?dmesg?|?grep?a.out? [??212.330289]?a.out[1946]:?segfault?at?0?ip?0000000000400571?sp?00007ffdf0aafbb0?error?6?in?a.out[400000+1000] [??227.437065]?a.out[1989]:?segfault?at?0?ip?0000000000400571?sp?00007ffcfd01c8c0?error?6?in?a.out[400000+1000] [root@VM-16-9-centos?c++]#? [root@VM-16-9-centos?c++]#?addr2line?-e?a.out?0000000000400571 /root/c++/main.cpp:6

先通過dmesg找到對應出錯的地址,再用?addr2line?-e?將地址解析到對應的代碼行。

?

gdb調試

gdb 想必大家都有聽說,Linux 下面一款常用的的調試工具。
gdb 編譯器通常以 gdb 命令的形式在終端中使用,下面學習下常用調試選項。

?

bt :查看堆棧信息

i locals :查看當前程序棧的局部變量

i args :查看當前程序棧的參數

i catch :查看當前程序中棧幀的異常處理器

p a :打印變量的值

i register :查看當前寄存器的值

r :從運行程序至第一個斷點,沒有斷點則一直運行完

quit :退出
?

gdb調試過程中,輸入 r ,bt。r 是運行 a.out 文件,bt查看堆棧情況。
我們不需要執行 gdb a.out,這樣就相當于重新運行了 a.out 文件。然而在實際開發中,有很多問題都是概率發生的,所以此方法不太實用。

linux下操作過程(省略部分 gdb 介紹信息):

[root@VM-16-9-centos?c++]#?gdb?a.out?core.1989? Reading?symbols?from?/root/c++/a.out...done. [New?LWP?1989] bCore?was?generated?by?`./a.out'. Program?terminated?with?signal?11,?Segmentation?fault. #0??0x0000000000400571?in?main?()?at?main.cpp:6 6????????*p=0; Missing?separate?debuginfos,?use:?debuginfo-install?glibc-2.17-307.el7.1.x86_64?libgcc-4.8.5-44.el7.x86_64?libstdc++-4.8.5-44.el7.x86_64 (gdb)?bt #0??0x0000000000400571?in?main?()?at?main.cpp:6 (gdb)?


直接執行 gdb a.out core.1989,不用 r 命令避免程序重復執行。使用 bt 命令,可以看到程序出錯代碼行。

?

strace+addr2line調試

strace 是一個集診斷、調試、統計與一體的工具,我們可以使用strace,對應用的系統調用和信號傳遞的跟蹤結果,來對應用進行分析,以達到解決問題,或者是了解應用工作過程的目的。

strace 的簡單的用法就是,執行一個指定的命令,在指定的命令結束之后,它也就退出了。
在命令執行的過程中,strace 會記錄和解析命令進程的所有系統調用,以及這個進程所接收到的,所有的信號值。
?

-c ,統計每一系統調用的所執行的時間,次數和出錯的次數等

-p ,指定進程pid
-i? ,輸出系統調用的入口指針

linux 下操作過程(省略部分加載信息):

[root@VM-16-9-centos?c++]#?strace?-i?./a.out? [00007f79d3573847]?munmap(0x7f79d3772000,?31038)?=?0 [0000000000400571]?---?SIGSEGV?{si_signo=SIGSEGV,?si_code=SEGV_MAPERR,?si_addr=NULL}?--- [????????????????]?+++?killed?by?SIGSEGV?(core?dumped)?+++ Segmentation?fault [root@VM-16-9-centos?c++]#?addr2line?-e?a.out?0000000000400571 /root/c++/main.cpp:6

?

絮叨

linux 調試技巧很重要,平時用到的也會很多,掌握好這些很關鍵。通過這篇文章,希望讀者能對 core dump 調試有大致的了解,更多 linux 知識和 linux 調試相關的知識,我下期會給大家繼續更新。

給大家推薦一本linux學習書籍,感覺還不錯!
?



?


專注后臺開發相關技術,廣度深度并存,干貨情懷同在。
微信搜索【盼盼編程】關注這個不一樣的程序員。

總結

以上是生活随笔為你收集整理的linux下调试core dump方式汇总,工作必备技能的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 激情综合久久 | 色久在线 | 亚洲精品欧美精品 | 91美女啪啪 | 五月婷综合 | 成人精品免费视频 | 日批免费在线观看 | 日本天天操 | 免费视频黄色 | 97人人澡人人爽人人模亚洲 | 中文字幕在线观 | 96国产精品 | 日韩欧美字幕 | 超碰精品在线观看 | 麻豆va | 91偷拍富婆spa盗摄在线 | 亚洲黄色免费视频 | 男人激烈吮乳吃奶爽文 | 男女福利视频 | 天天爽夜夜爽夜夜爽精品 | 亚洲精品成人无码熟妇在线 | 人人超碰人人 | 女人16一毛片 | 操网站| 调教撅屁股啪调教打臀缝av | 午夜丁香网 | 成人手机视频 | 女人的天堂网站 | 日韩有码在线观看 | 男女做爰猛烈刺激 | 成人av网址在线 | 成年人一级片 | 日韩精品免费在线观看 | 深夜免费在线视频 | 翔田千里在线播放 | 视频在线观看一区 | 香港三级日本三级三69 | y11111少妇| 中文字幕1页 | 91噜噜噜| 懂色a v| 2019毛片| 欧美久久久久久久久久 | 欧美日韩一区二区三区在线观看 | 欧美一级淫 | 天堂中文视频 | 中国黄色录像一级片 | 捆绑无遮挡打光屁股调教女仆 | 天天操天天操天天操天天操 | 国产视频在线观看免费 | 雨宫琴音一区二区三区 | 91成人国产 | 无码成人精品区在线观看 | 色欧美亚洲 | 欧美不卡影院 | 成人免费片 | 18禁男女爽爽爽午夜网站免费 | 天堂视频中文在线 | 亚洲一区免费视频 | av网址在线免费观看 | 日本sm调教—视频|vk | 欧美色图亚洲视频 | 狂野欧美性猛交xxxxhd | 男人天堂av网 | 国产精美视频 | av狠狠干 | 国产精品久久久久久久久久 | 欧美日韩国产麻豆 | 亚洲精品一区二区在线 | 黄色操人 | 卡一卡二视频 | 久久久黄色大片 | 国产精品www色诱视频 | aaaaav| www.日韩精品 | 99在线视频观看 | 国产欧美中文字幕 | 国产日韩精品久久 | 天天视频污 | 国产视频精品免费 | 另类图片亚洲色图 | 美女自拍偷拍 | 亚洲国产97 | 极品白嫩少妇无套内谢 | 香港三级日本三级韩国三级 | 天降女子在线观看 | 亚洲男人的天堂在线观看 | 无码人妻丰满熟妇区五十路 | 少妇做爰k8经典 | 日日夜夜2017 | 一本色道久久88加勒比—综合 | wwwxxx色 | 久久性av| 久久网av | 91综合色 | 亚洲精品久久久乳夜夜欧美 | 啪啪天堂 | 在线观看免费观看 | 日本午夜精品理论片a级app发布 |