gdb指令介紹?1 set scheduler-locking off|onoff 不鎖定其他線程,默認on 隻讓當前線程執行,現在小編就來說說關于gdb指令介紹?下面内容希望能幫助到你,我們來一起看看吧!
1 set scheduler-locking off|on
off 不鎖定其他線程,默認on 隻讓當前線程執行
2 disassemble
簡寫:disas反彙編使用方式disassembledisassemble $pc $pc 100disassemble 開始地址 結束地址
3 source your_script
使用gdb腳本
4 -tui
顯示代碼
5 thread apply all command
所有線程執行command查看所有線程的堆棧:thread apply all bt
6 info functions
輸出所有函數
7 輸出gdb log信息
set logging fileset logging on/off
8 info macro
查看這個宏在那些文件被引用了,以及宏定義是什麼樣子的。
9 macro -
查看宏展開的樣子
10 自動化調試
(gdb) break func
Breakpoint 1 at 0x3475678: file test.c, line 12.
(gdb) command 1
Type commands for when breakpoint 1 is hit, one per line.
End with a line saying just “end”.
print arg1
print arg2
print arg3
end
(gdb)`
11 si
歸納:當要進入沒有調試信息的庫函數調試的時候,用si是唯一的方法。當進入有調試信息的函數,用si和s都可以,但是他們不同,si是定位到彙編級别的第一個語句,但是s是進入到C級别的第一個語句
12 display/i $pc
執行si命令時打印彙編代碼
13 gdb <program> <PID>
可以找到業務線程的pid/tid,然後通過pid attach上去。再使用 set scheduler-locking on 堵塞其它線程。
14 p ‘f2.c’::x
file::variablefunction::variable可以通過這種形式指定你所想查看的變量,是哪個文件中的或是哪個函數中的。例如,查看文件f2.c中的全局變量x的值:
15 p *array@len
查看數組的值 有時候,你需要查看一段連續的内存空間的值。比如數組的一段,或是動态分配的數據的大小。你可以使用GDB的“@”操 作符,“@”的左邊是第一個内存的地址的值,“@”的右邊則你你想查看内存的長度。例如,你的程序中有這樣的語句: int *array = (int *) malloc (len * sizeof (int)); 于是,在GDB調試過程中,你可以以如下命令顯示出這個動态數組的取值: p *array@len 二維數組打印 p **array@len 果是靜态數組的話,可以直接用print數組名,就可以顯示數組中所有數據的内容了。
16 return <返回值>
改變程序流程,直接結束當前函數,并将指定值返回
17 call func
在當前位置執行所要運行的函數
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!