gdb調試

【1】如果gdb這個時候告訴你找不到這個帶調試信息庫的源文件路徑,此時給出的路徑地址是絕對路徑,比如

/home/rickyk/qt-4.8.6/src/corelib/tools/qstring.cpp: 沒有那個文件或目錄
這種提示的,你就應該用gdb提供的

set substitute-path

這個其實很好理解,就是替換規則,你如果想查看當前的替換規則,你可以

show substitute-path

比如此時我們需要qstring.cpp這個文件,但由于某種原因,目前我們不能在/home/rickyk/qt-4.8.6/src/corelib/tools/qstring.cpp中找到,但我們確可以在/home/rickyk/qt-everywhere-opensource-src-4.8.6/src/corelib/tools/qstring.cpp中找到,我們就

set substitute-path /home/rickyk/qt-4.8.6 /home/rickyk/qt-everywhere-opensource-src-4.8.6

【2】如果此時的gdb彈出的錯誤信息不是絕對路徑的概念,而是相對路徑的概念

./a.cpp 沒有那個文件或目錄
那么此時你可以用gdb的第二個源代碼路徑法寶----directory(dir) dirName來指定,也就是說如果我們此時的a.cpp不在當前目錄下,而是在當前目錄下的bak文件夾下,我們只要

dir bak

這個時候我們的gdb就會把你加進去的dir整個替換到相對路徑的前面,自己做拼接,也就是說,現在的./a.cpp變成了./bak/a.cpp

注意兩者的差別, 對于絕對路徑來說,你需要給出替換規則給他做字符串替換,對于相對路徑來說,你需要給他目錄來讓他做拼接, 也有點prefix的意思,這里的prefix由你給出,但相對路徑整體結構由gdb給出,然后完成拼接操作。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 調試前準備 獲取進程的內核轉儲(core dump) why:最大好處是,其保存了問題發生時的狀態。記錄進程當前狀...
    Gitlusen閱讀 958評論 0 2
  • 程序調試的基本思想是“分析現象->假設錯誤原因->產生新的現象去驗證假設”這樣一個循環過程,根據現象如何假設錯誤原...
    Manfred_Zone閱讀 16,572評論 0 26
  • 版權聲明:本文為 cdeveloper 原創文章,可以隨意轉載,但必須在明確位置注明出處! gdb 簡介 gdb ...
    登龍zZ閱讀 7,571評論 1 15
  • 《長相思》張煌言 秋山青,秋山明。 午夢驚秋醒未醒, 乾坤一草亭。 故國盟,故國情。 夜闌斜目透疏欞, 孤鴻三兩聲。
    qiushui__lianli閱讀 185評論 0 0
  • 成都+色達+年寶玉則 關于色達景點: 1.五明佛學院: 作為“世界第一”規模的佛學院,也是整個色達最著名的景點,我...
    晉娃閱讀 325評論 0 0