Linux下gdb調(diào)試打印棧幀中的變量過(guò)程
打印棧幀中變量的值
以下面代碼為例,操作 gdb 調(diào)試中,打印棧幀中的變量。
代碼如下:
#include <stdio.h>
int fun1(void)
{
int data1 = 0;
printf("---data1: %d\n", data1);
return data1++;
}
int fun2(void)
{
int data2 = 0;
data2 = 2*fun1();
return data2;
}
int main(void)
{
int data = 0;
data = fun2();
printf("---data: %d\n", data);
return 0;
}1. 在當(dāng)前棧幀打印變量
在 gdb 調(diào)試中,有時(shí)需要對(duì)棧幀中的變量值進(jìn)行打印。
命令為: print 變量
打印棧幀中變量的前提是:gdb 調(diào)試先切換到該棧幀中。
- 首先,在需要打印的函數(shù)中打斷點(diǎn)。
- 其次,輸入 r 命令運(yùn)行程序,程序會(huì)在斷點(diǎn)處停下來(lái)。
- 然后,輸入 bt 命令可以看到當(dāng)前函數(shù)的調(diào)用關(guān)系,即涉及的各個(gè)函數(shù)棧幀信息。
- 最后,輸入 print data1 命令,查看 fun1() 中變量 data1 的值。
如下所示:

可以看到,輸入 print data1 命令后,data1 此時(shí)的值為 1 。
2. 在其他棧幀打印變量
在 gdb 調(diào)試中,也可不用切換到當(dāng)前的棧幀中,打印該棧幀中的變量。
但是,需要保證變量所在的棧幀還沒(méi)有釋放,否則,是無(wú)法打印該棧幀中的變量的值的。
命令如: print fun1::data1 (打印函數(shù) fun1() 中變量 data1 的 值 )
- 首先,需要輸入 bt 命令,查看當(dāng)前可以查看的棧幀中的變量(確認(rèn)是否已經(jīng)釋放)。
- 其次,輸入 print fun1::data1 命令,查看變量 data1 的值。
如下所示:

可以看到,當(dāng)輸入 print fun1::data1 命令后, data1 的值為 1 。
注意,如果要打印棧幀中變量的值。
首先,需要確認(rèn)棧幀存在。即可輸入 bt 命令查看棧幀信息。
否則,可能棧幀已經(jīng)釋放,而無(wú)法打印變量的值。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Linux查看有線網(wǎng)卡和無(wú)線網(wǎng)卡的方法詳解
在 Linux 中查看有線網(wǎng)卡狀態(tài)的命令與查看無(wú)線網(wǎng)卡的命令類(lèi)似,但側(cè)重點(diǎn)有所不同,以下是幾個(gè)最常用和有效的命令,并有詳細(xì)的代碼供大家參考,感興趣的小伙伴跟著小編一起來(lái)看看吧2025-10-10
7個(gè)Linux 命令輕松搞定線上Java日志管理難題
在線上Java應(yīng)用的運(yùn)維工作中,日志管理是至關(guān)重要的一環(huán),本文將針對(duì)這些常見(jiàn)難題,介紹7個(gè)實(shí)用的Linux命令,幫助你輕松搞定線上Java日志管理,希望對(duì)大家有所幫助2025-07-07
ubuntu中python調(diào)用C/C++方法之動(dòng)態(tài)鏈接庫(kù)詳解
這篇文章主要給大家介紹了關(guān)于如何在ubuntu中python調(diào)用C/C++方法之動(dòng)態(tài)鏈接庫(kù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起看看吧2018-11-11
Linux進(jìn)程間通信(IPC)的幾種方式總結(jié)
進(jìn)程間通信是指至少兩個(gè)進(jìn)程或線程間傳送數(shù)據(jù)或信號(hào)的一些技術(shù)或方法,每個(gè)進(jìn)程都有自己的一部分獨(dú)立的系統(tǒng)資源,彼此是隔離的,為了能使不同的進(jìn)程互相訪問(wèn)資源并進(jìn)行協(xié)調(diào)工作,才有了進(jìn)程間通信,本文就給大家介紹幾種Linux進(jìn)程間通信的方式,需要的朋友可以參考下2023-09-09
在VMware虛擬機(jī)里安裝Linux操作系統(tǒng)
這篇文章介紹了在VMware虛擬機(jī)里安裝Linux操作系統(tǒng)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
Linux內(nèi)核設(shè)備驅(qū)動(dòng)之系統(tǒng)調(diào)用筆記整理
今天小編就為大家分享一篇關(guān)于Linux內(nèi)核設(shè)備驅(qū)動(dòng)之系統(tǒng)調(diào)用筆記整理,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12

