linuxc的除錯工具
華清遠見嵌入式學院講師。
在linux開發中,使用gcc做為編譯器,編譯程式產生出來的東西可以是非常高效的elf可執行檔案。
但是我們今天來看的是非常有用的除錯工具可以幫我們檢視到一些檔案細節。
第乙個是
nmnm 工具可以列出檔案中各部分的位址資訊。
08049f28 d _dynamic
08049ff4 d _global_offset_table_
080484ac r _io_stdin_used
w _jv_registerclasses
08049f18 d __ctor_end__
08049f14 d __ctor_list__
08049f20 d __dtor_end__
08049f1c d __dtor_list__
080484bc r __frame_end__
08049f24 d __jcr_end__
08049f24 d __jcr_list__
0804a014 a __bss_start
0804a00c d __data_start
08048460 t __do_global_ctors_aux
08048330 t __do_global_dtors_aux
0804a010 d __dso_handle
w __gmon_start__
0804845a t __i686.get_pc_thunk.bx
08049f14 d __init_array_end
08049f14 d __init_array_start
080483f0 t __libc_csu_fini
08048400 t __libc_csu_init
u __libc_start_main@@glibc_2.0
0804a014 a _edata
0804a01c a _end
0804848c t _fini
080484a8 r _fp_hw
08048290 t _init
08048300 t _start
080483b4 t abc
0804a014 b completed.7065
0804a00c w data_start
0804a018 b dtor_idx.7067
08048390 t frame_dummy
080483c8 t kkk
080483cd t main
u puts@@glibc_2.0
想要得到上述結果,需要乙個程式:
#include
void abc(void)
void kkk(void)
int main(int argc,char **argv)
通過使用gcc編譯
gcc test.c
會生成乙個a.out檔案
然後直接使用
nm就會得到螢幕上的結果了,
這個結果有什麼用呢?
仔細觀察 nm 命令執行的結果其中:
080483b4 t abc
的意思是abc函式的入口位址是0x080483b4
第二個程式是
addr2line
這個程式如果想要正常執行,需要在編譯時加上-g選項
gcc test.c -g
這樣當你輸入
addr2line 0x080483b4
時系統會報出abc所在的行
/home/linux/test_c/test.c:2
這些命令都會自動的查詢a.out檔案並載入分析,顯示你所需要的檔案資訊。
除錯工具 之Python除錯工具pycharm
1 pycharm的安裝 pycharm是一款非常好用的python ide,提供專業版和社群版,就像eclipse和myeclipse一樣,專業版是收費的,而社群版是免費的但功能就沒有專業版的功能強大。1.2 安裝 這裡就不必細說,直接next就ok ps 安裝完成後一定要執行 1.3 破解 採用...
vue的除錯工具
上圖蠻有意思。vuejs用了很久了,大部分時候看下報錯資訊,結合vue.js devtools檢視下各個元件的資料其實就可以了,但是有時候還是有必要使用debugger的。話分兩頭,本文主要講兩個東西 vue.js devtools開發工具的使用 使用debugger和sourcemap除錯vue元...
pudb python的除錯工具
目錄 cnblog python的偵錯程式pudb簡易教程 介面下按?就能出來快捷鍵列表。最常用的快捷鍵,應該是如下幾個 執行介面切換 b toggle breakpoint 打斷點 取消斷點 m open module 開啟python模組 pdb有2種用法 非侵入式方法 不用額外修改源 在命令列...