Linux C語言 gdb工具的使用

2021-10-01 23:14:54 字數 1863 閱讀 1051

先寫乙個不能正確change的**:

linux@ubuntu:

~/workspace/pointer$ cat main2.c

#include

void

change

(int a ,

int b)

intmain()

然後使用gdb工具編譯:

gcc -g main2.c -o main2.out
然後進入gdb除錯:

gdb .

/main2.out

然後開始gdb除錯:

start
顯示函式、檢視a變數、執行下一句、進入函式等語句進行除錯

l //顯示函式,顯示不完全時繼續l

p a// 檢視a變數的值

n //執行一句**

s //進入函式裡面

bt //檢視函式堆疊

q //退出除錯

由下面可以看出只是把5和3兩個數傳到了a和b:

(gdb) s

change (a=

5, b=

3) at main2.c:

5

bt(堆疊)的作用(在子函式裡使用bt):

(gdb) bt

#0 change (a=

5, b=

3) at main2.c:5#1

0x0804842b in main (

) at main2.c:

13

此時change函式壓在main函式上邊,此時p a 列印的是change裡面的a;

按 f 1 切回到main函式;按f 0 切回到main函式;

寫乙個能正確change的**:

linux@ubuntu:

~/workspace/pointer$ cat main.c

#include

void

change

(int

* a ,

int* b)

intmain()

進入gdb除錯後進入change函式內部:

(gdb) n

13change

(&a,

&b);

(gdb) s

change (a=

0xbffff338

, b=

0xbffff33c

) at main.c:55

int tmp=

*a;(gdb) n

6*a=

*b;(gdb) p tmp$1=

5(gdb) p a$2=

(int*)

0xbffff338

(gdb) p b$3=

(int*)

0xbffff33c

可以看出來,int a在記憶體中分配的位址是0xbffff338,int b的位址是0xbffff33c,正好相差4個位元組。

(gdb) n

7*b=tmp;

(gdb) p a$4=

(int*)

0xbffff338

(gdb) p b$5=

(int*)

0xbffff33c

(gdb) p *a //&是取位址,*是取位址裡的內容

$11=

3(gdb) p *b

$12=

3

centos下Linux C語言MD5的使用

在linux c變成中用到md5加密會使用到openssl庫,下面給出的是乙個簡單的小demo include include include define md5 length 16 define max 40 int main void fprintf stderr,s n buf return...

Linux c程式設計之gdb的使用

gdb是在linux的控制台視窗下的乙個除錯工具,功能十分強大,今天些簡單的學習一下關於gdb的基本使用 首先,用gcc編譯程式時需要加上 g引數以便獲取除錯資訊 首先要使用gdb除錯程式,在用gcc編譯時要加上 g引數,否則gdb會提示缺少除錯資訊。如下圖 因此,需要使用如下方法編譯程式 gcc ...

gdb工具的使用

gdb是乙個互動式的除錯工具,在linux系統中可以很好地幫助我們完成程式的除錯。它的主要功能有 1.設定斷點,讓程式直接執行至可能出錯的地方 2.檢視變數的值,在除錯過程中隨時檢視我們關注的變數的值。3.修改變數的值,這是vs的偵錯程式所不具有的功能,可以幫助我們更快的定位程式的問題所在。那麼gd...