用objcopy把除錯資訊放到單獨的檔案中

2021-04-21 10:33:11 字數 1118 閱讀 5634

objcopy

把除錯資訊放到單獨的檔案中

visual c++

預設把除錯資訊放到與可執行程式同名的

pdb檔案中(較新版本的

vc),而

gcc預設把除錯資訊放到可執行檔案中。除錯資訊與程式分離有不少好處,一是可以大大較少可執行程式的大小,二是增加了逆向工程的難度。

gdb

允許將除錯資訊從可執行程式中分離出來,放在單獨的檔案中,

gdb自動查詢並載入除錯資訊。如果可執行程式的除錯資訊被放到單獨的檔案中,那麼這個可執行程式應該包含乙個除錯鏈結,指向除錯資訊檔案,還有乙個與內容相關的校驗和。假設存在乙個可執行程式

/home/someone/foo,

並且foo

檔案存在乙個除錯鏈結,指向

foo.dbg

。除錯foo

時gdb

會在程式的當前目錄、當前目錄下的

.debug

目錄、全域性除錯檔案目錄(假設是

/home/debug

,可以通過

gdb的

set debug-file-directory

命令設定)中查詢

foo.dbg

,也就是查詢

/home/someone/foo.dbg

,/home/someone/.debug/foo.dbg

,/home/debug/foo/foo.dbg

這三個檔案。 在

unix

、linux

系統中借助

objcopy

可以輕鬆的實現除錯資訊的分離。操作步驟如下: 1

編譯 gcc -g -o foo foo.c

2 生成單獨的除錯資訊檔案

objcopy --only-keep-debug foo foo.dbg

3 去除除錯資訊

objcopy --strip-debug foo

4 新增除錯資訊檔案鏈結

objcopy --add-gnu-debuglink=foo.dbg foo

5 確認除錯資訊檔案鏈結

objdump -s -j .gnu_debuglink foo

用c語言把wav檔案轉換成數字放到txt檔案裡面

include include include include define w 128 每次讀寫檔案的資料量 int fileset 0 定義乙個整型變數,用於儲存fseek函式的返回值 int fileend 0 整個檔案的位元組數 int filelength 0 檔案的資料長度。注 每2個位...

把核心中的資訊列印到檔案

1.include include include include include include include include include define my file root logfile char buf 128 struct file file null static int in...

把jmeter獲取到的資訊存到本地檔案

1 jmeter使用正規表示式提取器,獲取到響應資訊,把獲取到的響應資訊寫到本地檔案 2 新增後置bean shell 寫入以下指令碼 3 開啟本地檔案檢視,寫入成功 指令碼內容如下 filewriter fstream new filewriter e desktop 1.txt true buf...