GDB為什麼檢視不了原始碼?
GDB為什麼檢視不了原始碼?說No symbol “xxx” in current context?
可能有以下原因:
- 原因一:可能GCC版本跟GDB版本相差太大,以至於GCC產生的DWARF4格式的debug檔案,GDB無法解析.
- 解決方法:
檢視GCC和GDB版本號:
- gcc --version
- gdb --version
- 相容版本號:GCC = 4.8.x, GDB = 7.6.x,可以讓GDB檢視到GCC生成的相應的dwarf格式的檔案。
-
原因二:GCC編譯的時候並沒有加上"-g"或者"-g3"引數,所以並沒有把原始碼編譯進可執行程式裡。
-
解決方法:在編譯去時候加上-g或者-g3(g3引數比g引數,能檢視更多的資訊)
-
原因三:make clean的時候,並沒有真正把object檔案和executable可執行檔案全部刪除,還是使用原來的可執行程式,所以要確保真的刪除了。
一些小提示:
- 如果打斷點的時候,會給出具體的檔案資訊,那麼原始碼是被編譯進可執行程式的,是可以在執行時檢視的。
例如:
(gdb) b main
Breakpoint 1 at 0x4510d3: file ./src/main.cpp, line 118.
- 以上例子,在main函式入口處打一個Breakpoint,可以看到斷點所在的具體檔案且所在行,說明原始碼已經被編譯進可執行程式了。
相關文章
- gdb 檢視 jsoncpp物件JSON物件
- 帝國cms原始碼怎麼檢視原始碼
- fiddler 抓手機包出現這種情況為什麼檢視不了請求資料
- GDB檢視記憶體(x 命令)記憶體
- 如何檢視python原始碼Python原始碼
- 為什麼要閱讀原始碼原始碼
- 為什麼大部分碼農做不了架構師?架構
- 使用 gdb 檢視 coredump 檔案的 backtrace
- gdb golang 檢視iface 內部結構Golang
- petite-vue原始碼剖析-為什麼要讀原始碼?Vue原始碼
- MySql 什麼是檢視MySql
- 檢視是什麼玩意
- 為什麼你總成為不了架構師?架構
- 從原始碼安裝GDB-8.1原始碼
- drf 檢視使用及原始碼分析原始碼
- django rest framework 檢視原始碼解析DjangoRESTFramework原始碼
- 為什麼我不贊成開發來寫檢視
- 為什麼你成為不了團隊核心成員
- [20210207]使用gdb檢視等待事件11g.txt事件
- Golang之微服務為什麼發現不了Golang微服務
- 我們為什麼要閱讀webpack原始碼Web原始碼
- [原始碼解析]為什麼mapPartition比map更高效原始碼APP
- 為什麼我們需要更注重原始碼安全?原始碼
- 為什麼建議你常閱讀原始碼?原始碼
- SpringMVC原始碼關於檢視解析渲染SpringMVC原始碼
- vue原始碼之資料控制檢視Vue原始碼
- 為什麼在Docker裡使用gdb偵錯程式會報錯Docker
- 什麼是資料庫檢視?資料庫
- 作為程式設計師為什麼要閱讀原始碼程式設計師原始碼
- 問題:PCB檔案PADS檢視不了
- PHP 原始碼探祕 – 為什麼 trim 會導致亂碼PHP原始碼
- 【肥朝】看原始碼,我為什麼推薦IDEA?原始碼Idea
- Spring——為什麼會有迴圈依賴(原始碼)Spring原始碼
- 數倉的等待檢視中,為什麼會有Hashjoin-nestloopOOP
- DRF檢視的使用及原始碼流程分析原始碼
- Vue原始碼簡析之檢視生成(上)Vue原始碼
- 如何檢視大型工程原始碼(非常不錯)原始碼
- charles 用電腦分享 wifi 為什麼抓不了包?WiFi