tft每日頭條

 > 圖文

 > gdb指令介紹

gdb指令介紹

圖文 更新时间:2024-09-04 18:12:42

gdb指令介紹?1 set scheduler-locking off|onoff 不鎖定其他線程,默認on 隻讓當前線程執行,現在小編就來說說關于gdb指令介紹?下面内容希望能幫助到你,我們來一起看看吧!

gdb指令介紹(運維經第25章)1

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每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved