導航:首頁 > 源碼編譯 > gdb源碼匯編mix

gdb源碼匯編mix

發布時間:2022-07-17 23:58:18

『壹』 在linux下怎樣用GDB調試make編譯的程序

調試生成的可執行文件,即.exe文件

『貳』 如何使用gdb調試,類似於vc那樣的帶源碼窗口

很簡單,只需要帶參數:-tui啟動即可,看到界面:


但是默認焦點是在上面源代碼窗口上的(使用↑,↓、PgDn、PgUp鍵對源代碼窗口有效),可使用命令「info win」看看焦點的位置:

(gdb) info win
SRC (15 lines) <has focus>
CMD (8 lines)
(gdb)

想要切換到命令窗口:fs CMD;

想要切換到源碼窗口:fs SRC

注意:大小寫敏感。直接:

(gdb) fs
warning: Incorrect Number of Arguments.
Usage: focus {<win> | next | prev}

=====================================================================

配合窗口經常使用的命令:

where——程序運行到了何處;

list——列出程序運行處附近10行源碼;

『叄』 如何編譯gdb源代碼

tar xvf 這跟你的包名(假如是GDBXX)
cd GDBXX
./configure && make
cp -v gdb/gdb /usr/bin/
你的是在RH下的肯定是SHELL嘛,這個是在UNIX下的調試軟體哈.unix下沒有EXE這個概念哈,你下的包都是代碼形式,需要編譯哈,網上的RPM包太難找了

『肆』 GDB調試無法載入源碼

你使用Makefile編譯調試的吧。
注意Makefile的寫法,一個空格也會造成錯誤的。
在編譯的代碼中添加 -g 和 -Wall 。-g是為了GDB調試用的,-Wall可以顯示全部的警告,對你分析程序很有好處。

這個Segemental fault 是段錯誤,造成這個錯誤的原因有很多,可能是內存 或者 棧溢出,出現這個錯誤需要功過GDB反復調試,查看錯誤原因。

『伍』 linux 下面怎麼用gdb調試多個.c文件

Linux 下調試匯編代碼既可以用 GDB、DDD 這類通用的調試器,也可以使用專門用來調試匯編代碼的 ALD(Assembly Language Debugger)。
從調試的角度來看,使用 GAS 的好處是可以在生成的目標代碼中包含符號表(symbol table),這樣就可以使用 GDB 和 DDD 來進行源碼級的調試了。要在生成的可執行程序中包含符號表,可以採用下面的方式進行編譯和鏈接:

[xiaowp@gary code]$ as --gstabs -o hello.o hello.s
[xiaowp@gary code]$ ld -o hello hello.o

執行 as 命令時帶上參數 --gstabs 可以告訴匯編器在生成的目標代碼中加上符號表,同時需要注意的是,在用 ld 命令進行鏈接時不要加上 -s 參數,否則目標代碼中的符號表在鏈接時將被刪去。
編程序員通常面對的都是一些比較苛刻的軟硬體環境,短小精悍的ALD可能更能符合實際的需要,因此下面主要介紹一下如何用ALD來調試匯編程序。首先在命令行方式下執行ald命令來啟動調試器,該命令的參數是將要被調試的可執行程序:

[xiaowp@gary doc]$ ald hello
Assembly Language Debugger 0.1.3Copyright (C) 2000-2002 Patrick Alken
hell ELF Intel 80386 (32 bit), LSB, Executable, Version 1 (current)
Loading debugging symbols...(15 symbols loaded)
ald>

當 ALD 的提示符出現之後,用 disassemble 命令對代碼段進行反匯編:

ald> disassemble -s .text
Disassembling section .text (0x08048074 - 0x08048096)
08048074 BA0F000000 mov edx, 0xf
08048079 B998900408 mov ecx, 0x8049098
0804807E BB01000000 mov ebx, 0x1
08048083 B804000000 mov eax, 0x4
08048088 CD80 int 0x80
0804808A BB00000000 mov ebx, 0x0
0804808F B801000000 mov eax, 0x1
08048094 CD80 int 0x80

上述輸出信息的第一列是指令對應的地址碼,利用它可以設置在程序執行時的斷點:

ald> break 0x08048088
Breakpoint 1 set for 0x08048088

斷點設置好後,使用 run 命令開始執行程序。ALD 在遇到斷點時將自動暫停程序的運行,同時會顯示所有寄存器的當前值:

ald> run
Starting program: hello
Breakpoint 1 encountered at 0x08048088
eax = 0x00000004 ebx = 0x00000001 ecx = 0x08049098 edx = 0x0000000Fesp = 0xBFFFF6C0 ebp = 0x00000000 esi = 0x00000000 edi = 0x00000000
ds = 0x0000002B es = 0x0000002B fs = 0x00000000 gs = 0x00000000
ss = 0x0000002B cs = 0x00000023 eip = 0x08048088 eflags = 0x00000246
Flags: PF ZF IF
08048088 CD80 int 0x80

如果需要對匯編代碼進行單步調試,可以使用 next 命令:

ald> next
Hello, world!
eax = 0x0000000F ebx = 0x00000000 ecx = 0x08049098 edx = 0x0000000Fesp = 0xBFFFF6C0 ebp = 0x00000000 esi = 0x00000000 edi = 0x00000000
ds = 0x0000002B es = 0x0000002B fs = 0x00000000 gs = 0x00000000
ss = 0x0000002B cs = 0x00000023 eip = 0x0804808F eflags = 0x00000346
Flags: PF ZF TF IF
0804808F B801000000 mov eax, 0x1

若想獲得 ALD 支持的所有調試命令的詳細列表,可以使用 help 命令:

ald> help
Commands may be abbreviated.
If a blank command is entered, the last command is repeated.
Type `help <command>'' for more specific information on <command>.
General commands
attach clear continue detach disassemble
enter examine file help load
next quit register run set
step unload window write
Breakpoint related commands
break delete disable enable ignore
lbreak tbreak

『陸』 gdb載入動態庫成功,但是不能顯示動態庫中的源碼(gdb+gdbserver)

因為具體的給的不夠詳細,不清楚你遇到的情況。
如果僅從斷點上看,應該就是CApartment.cpp:55
但是,如果你的程序編譯的時候,不是-O0,那個可能回不到源碼,只能看匯編。
1、有時候(很少)就是編譯器的錯誤。
2、還有可能就是你調試的程序和你的源碼不匹配
3、你的程序已經崩潰了,破壞了堆棧或者GDB需要的數據。
4、這個地方有特殊的定位信息
5、其他情況,還是比較多的,經常遇到。
如果懂匯編,最好看看匯編。
如果不懂,看看那一條語句是最後一條能夠跟蹤的語句。
仔細看看最後一條語句的所有變數,應該能猜出來是什麼問題。

『柒』 開發php內核擴展如何使用GDB來調試 - PHP內核源碼分析

這個問題曾在我去某公司面試時被提起過,可惜考官問的是php的BUG調試方法,後來居然說的就是Core
mp,當時我就想這和PHP一點毛關系都沒有,開啟Core
mp幾乎是所有C/C++開發必備的,只是常態,可能是他們的PHP擴展用得太多了,也從側面說明了php的擴展比起其它語言來要麻煩許多。

閱讀全文

與gdb源碼匯編mix相關的資料

熱點內容
噴油螺桿製冷壓縮機 瀏覽:573
python員工信息登記表 瀏覽:373
高中美術pdf 瀏覽:156
java實現排列 瀏覽:510
javavector的用法 瀏覽:978
osi實現加密的三層 瀏覽:229
大眾寶來原廠中控如何安裝app 瀏覽:909
linux內核根文件系統 瀏覽:238
3d的命令面板不見了 瀏覽:520
武漢理工大學伺服器ip地址 瀏覽:143
亞馬遜雲伺服器登錄 瀏覽:520
安卓手機如何進行文件處理 瀏覽:68
mysql執行系統命令 瀏覽:925
php支持curlhttps 瀏覽:141
新預演算法責任 瀏覽:442
伺服器如何處理5萬人同時在線 瀏覽:246
哈夫曼編碼數據壓縮 瀏覽:421
鎖定伺服器是什麼意思 瀏覽:382
場景檢測演算法 瀏覽:615
解壓手機軟體觸屏 瀏覽:345