bfd

    3熱度

    1回答

    我想實現回調像函數調用我自己。我已經成功地展開堆棧,並且我的所有返回地址都出現在我的堆棧中。現在我想從這個信息獲取函數名稱,變量名稱輸入到我的函數。此外,我想以編程方式執行此操作,即在運行時,我應該能夠獲得有關在我的程序中調用到現在爲止的所有函數的信息。 讓我們假設編譯時我很好地編譯了我的-g標誌。 我想使用dladdr()函數來獲取函數名稱,但這沒有奏效。它給我錯誤,「錯誤:未知類型名稱'Dl_

    0熱度

    1回答

    假設我有兩個文件main.o是從gcc編譯的,另一個文件是從MSVC編譯的文件function.o; 是否可以從這些文件生成可執行文件(通過鏈接)? 這是什麼BFS(二進制文件描述符)庫專爲? 我的意思是我可以使用BFS來做到這一點? 如果沒有,有沒有辦法做到這一點?

    0熱度

    1回答

    將二進制文件嵌入到帶有gcc的精靈圖像中時,是否有辦法改變自動生成的_binary_*_size符號的地址?與_binary_*_start和_binary_*_end符號不同,_binary_*_size符號似乎不遵循代碼的基地址。他們在一個bfd絕對部分(*ABS*)。 例如: $ arm-linux-gnueabihf-gcc -nostdlib -Wl,-Ttext=0x80000000,

    2熱度

    1回答

    當我使用調試信息(gcc -g)生成程序時,gdb能夠告訴我函數中局部變量的地址。因此,調試符號必須包含足夠的信息來計算這個值(即與ebp的偏移量),並且由於gdb使用libbfd來讀取調試符號,所以我應該也可以。 但是,libbdf的文檔似乎沒有任何關於此的內容。 libbfd可以給我這些信息嗎?

    0熱度

    1回答

    我使用libld(http://linux.die.net/man/3/dladdr)中的dladdr來獲取函數調用的跟蹤。在這裏它與一個單一的跟蹤元件最小例如: #include<iostream> #include <dlfcn.h> // link with -ldl -rdynamic a void f(){ void **frame = static_cast<void

    0熱度

    2回答

    我正在使用函數bfd_find_nearest_line來查找函數的源位置(從帶有調試符號的可執行文件 - 編譯爲-g)。自然的論據之一是函數指針我想定位: boolean _bfd_elf_find_nearest_line (abfd, section, symbols, offset, filename_ptr,

    3熱度

    1回答

    我的問題是關於bfd的,以及在以下代碼中段的數量是如何工作的。下面顯示了bfd結構的gdb調試器內部的代碼和轉儲以及它內部的部分結構。我還包括了下面bfd和bfd->部分的數據結構定義。我的問題是:爲什麼當我運行這段代碼時(可執行文件被稱爲getsections):getsections getsections.o(因此將它傳遞給自己的目標文件) - 爲什麼部分結構是空白的(全爲零),如果你看看b

    0熱度

    1回答

    我有一個使用g ++版本2.96構建的庫文件。 lib的源代碼不可用,也沒有原始開發人員的支持。 我想它採用了最新的G ++版本(4.x的說)我的應用程序聯繫起來。據我瞭解,自gcc veriosn 3.3開始,名稱修改方案已發生變化。這就是爲什麼新的鏈接器不能識別舊的lib文件中的符號。 我已經做了一些關於網絡的研究,並研究了像objcopy,objdump,C++ filt和nm等工具,並嘗試