LinuxC的除錯工具

2021-06-06 02:12:35 字數 1866 閱讀 5253

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種用法 非侵入式方法 不用額外修改源 在命令列...