久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

Hi,歡迎來到嵌入式培訓高端品牌 - 華清遠見教育科技集團<北京總部官網>,專注嵌入式工程師培養15年!
當前位置: > 華清遠見教育科技集團 > 嵌入式學習 > 講師博文 > LinuxC的調試工具
LinuxC的調試工具
時間:2017-01-05作(zuo)者:華清遠見

在linux開(kai)發中(zhong),使(shi)用gcc做為編(bian)譯(yi)器(qi),編(bian)譯(yi)程(cheng)序產生出來的東西可以是非(fei)常高效的ELF可執行(xing)文件。

但是我們(men)今天來看的是非(fei)常有用的調試(shi)工具可以幫(bang)我們(men)查看到一些文(wen)件細節。

第一個是 

nm

nm 工具可以(yi)列(lie)出(chu)文件中(zhong)各部分的地址(zhi)信息(xi)。

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
    &nbsp;   U puts@@GLIBC_2.0

想(xiang)要得到上述結果,需要一個程序:

#include <stdio.h>
 &nbsp;      void abc(void) {

printf("Hello,world/n");
        return;
        }

void kkk(void) {
        return ;
        }
        int main(int argc,char **argv) {
        ((void (*)())0x80483b4)();
        return 0;
    &nbsp;   }

通過使用(yong)GCC編譯

gcc test.c

會生成一個(ge)a.out文件

然后直接使用

nm

就會得到屏幕上的結果了,

這個結果(guo)有什么用(yong)呢?

仔細觀察 nm 命令執(zhi)行的結果其中(zhong):

080483b4 T abc

的意思是abc函(han)數的入口地址是0x080483b4

在(zai)程(cheng)序中(zhong)我們(men)使(shi)用(yong)這個地址就可以(yi)直接調用(yong)函數(shu)abc,了(le)解鏈接信息。

第二個程序是

addr2line

這個程序如果(guo)想要正常(chang)執行,需要在編譯(yi)時加上-g選項

gcc test.c -g

這樣當你輸入

addr2line 0x080483b4

時(shi)系統會報出abc所(suo)在的行

/home/linux/test_c/test.c:2

這些命令(ling)都會自動的查找a.out文件(jian)并加載分析,顯示(shi)你所(suo)需要的文件(jian)信息。

發表評論
評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)