set scheduler-locking off|on
off 不鎖定其他執行緒,預設disassembleon 只讓當前執行緒執行
簡寫:disassource your_script反彙編使用方式
disassemble
disassemble $pc $pc+100
disassemble 開始位址 結束位址
使用gdb指令碼-tui
顯示**
info functions
輸出所有函式輸出gdb log資訊
set logging fileinfo macroset logging on/off
檢視這個巨集在那些檔案被引用了,以及巨集定義是什麼樣子的。macro -
檢視巨集展開的樣子自動化除錯
(gdb) break funcsibreakpoint 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)`
當我們的斷點到達時,自動執行command中的三個命令,把func的三個引數值打出來。
歸納:當要進入沒有除錯資訊的庫函式除錯的時候,用si是唯一的方法。display/i $pc當進入有除錯資訊的函式,用si和s都可以,但是他們不同,si是定位到彙編級別的第乙個語句,但是s是進入到c級別的第乙個語句
執行si命令時列印彙編**
gdb
可以找到業務執行緒的pid/tid,然後通過pid attach上去。p 『f2.c』::x再使用 set scheduler-locking on 堵塞其它執行緒。
file::variablep *array@lenfunction::variable
可以通過這種形式指定你所想檢視的變數,是哪個檔案中的或是哪個函式中的。例如,檢視檔案f2.c中的全域性變數x的值:
檢視陣列的值return 《返回值》有時候,你需要檢視一段連續的記憶體空間的值。比如陣列的一段,或是動態分配的資料的大小。你可以使用gdb的「@」操
作符,「@」的左邊是第乙個記憶體的位址的值,「@」的右邊則你你想檢視記憶體的長度。例如,你的程式中有這樣的語句:
int *array = (int *) malloc (len * sizeof (int));
於是,在gdb除錯過程中,你可以以如下命令顯示出這個動態陣列的取值:
p *array@len
二維陣列列印
p **array@len
果是靜態陣列的話,可以直接用print陣列名,就可以顯示陣列中所有資料的內容了。
改變程式流程,直接結束當前函式,並將指定值返回call func
在當前位置執行所要執行的函式
運維經 第5章 python pip 加速
在使用pip install 的時候會很慢,而且你還是個急脾氣,咋整?pip install h 看一下,有沒有什麼解決方案?package index options i,index url base url of the python package index default this sho...
運維經 第9章 rust cargo 加速
因為本人主營業務是c 那麼就要更了解c 的敵人 rust 聽說她要取代c 但不得不說,rust的工具鏈還是非常值得稱讚的,後續會開幾期來講講rust工具鏈,今天還是談談加速。找到cargo的配置,cargo config base frank deepin cd cargo base frank d...
運維經 第33章 script字元錄屏工具
1.選項 usage script options file make a typescript of a terminal session.options c,command run command rather than interactive shell e,return return exi...