原文鏈接 編譯 nm:列出目標文件中的符號。 objdump:顯示目標文件中的詳細信息。 readelf:顯示關於 ELF 目標文件的信息。 參考 清單 1. hw.c 程序 #include <stdio.h> ...
GCC把C語言源文件 .c 編譯成匯編語言文件 .s ,匯編器把匯編語言文件翻譯成目標文件 .o ,最后由鏈接器鏈接所有的目標文件和有關的庫生成可執行文件 a.out 。 如打開 g 選項,GCC編譯 .c 文件時,把附加的調試信息插進 .s 文件,這些調試信息經匯編器和鏈接器稍加轉換一直傳到可執行文件中。這些調試信息包括行號 變量的類型和作用域 函數名字 函數參數和函數的作用域等源文件的特性。 ...
2020-06-15 14:35 0 658 推薦指數:
原文鏈接 編譯 nm:列出目標文件中的符號。 objdump:顯示目標文件中的詳細信息。 readelf:顯示關於 ELF 目標文件的信息。 參考 清單 1. hw.c 程序 #include <stdio.h> ...
Date: 2018.7.18 1、參考: https://www.jianshu.com/p/863b279c941e https://sourceware.org/binutils/docs/binutils/nm.html 2、Linux中目標文件解析的三個命令 ...
最近在調試一些問題,發現幾個命令很實用,記錄一下。 一 背景 也許大家都遇到過這種場景,就是有二進制代碼,比如深度分析下此文件到底是什么格式的圖片等,這篇文章就記錄我分析下二進制 ...
一、需求分析so 的崩潰並不像 Java 代碼那么好定位,我們通常看到的就只是 so 中的一大段崩潰的堆棧信息。那么我們怎么通過這個堆棧信息來定位我們的問題呢? 二、addr2line1. 介紹Addr2line 工具(它是標准的 GNU Binutils 中的一部分)是一個可以將指令的地址 ...
其實問題的本質是對elf格式的理解問題,因為是查看so庫的符號表發現的問題。 事情起因是這樣的,由於我的一個程序編譯的時候出現了undefined reference to “XXX”的錯誤,需要鏈接特定的so庫,發現用nm [file]找不到“XXX”函數符號,結果用readelf -s ...
ELF文件包括: (1)可重定位的目標文件 (2)可執行的目標文件 (3)可被共享的目標文件 可以用file命令來看目標文件是否是ELF文件 在linux下,用readelf來看ELF頭部或者其它各section的內容,用objdump來對指定的內容(.text ...
轉載地址:https://www.jianshu.com/p/c2e2b8f8ea0d addr2line工具是一個可以將指令的地址和可執行映像轉換為文件名、函數名和源代碼行數的工具。這在內核執行過程中出現崩潰時,可用於快速定位出出錯的位置,進而找出代碼的bug。 用法 ...
readelf:-h:文件頭-S:段表-s:符號表-d: 查看依賴庫-p:查看某個段內容,非常重要。如:readelf -p .comment libc.so (通過-p對只讀段的查看就可以替代strings命令) objdump:-d:反匯編(objdump我基本只用這一個)-h:段表 ...