第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

gdb調(diào)試的問題

gdb調(diào)試不懂啊,能在講一下嘛

正在回答

2 回答

一段程序執(zhí)行太快了,若想知道該程序在執(zhí)行過程的每一步執(zhí)行后對結(jié)果的影響或者了解該語句的作用,則需要一種調(diào)試工具,讓他動作變慢,并且隨著你的控制讓他一步一步的執(zhí)行,而且其間你可以用一些命令查看內(nèi)存,驗證結(jié)果,這就是gdb調(diào)試工具的作用。以下是我的筆記:

GDB可以對程序進行斷點調(diào)試,單步調(diào)試,

如果用gdb調(diào)試,需要對程序重新編譯,格式為:

gcc –g main.c –o main.out

這樣生成的main.out才能用gdb調(diào)試。

需要注意的是,在調(diào)試的時候不能刪除原代碼文件,即main.c ,如果將main.c刪除了,gdb依然不支持斷點、單步調(diào)試。

用gdb調(diào)試程序格式:gdb ./main.out? 或gdb main.out

list 或者 l? 列出當前調(diào)試程序的部分(前10行)源代碼。

再按一次回車(默認執(zhí)行上一次命令),繼續(xù)列出下面的源代碼

單步調(diào)試命令:start

執(zhí)行后顯示:默認斷點1在main()處,具體行數(shù)為本文件的第13行

第13行的指令為:int a=5;

查看內(nèi)存中變量的值,print a??? 簡寫 p a 回車

顯示a的值

因為int a=5;指令還沒有執(zhí)行完畢,所以a為編譯器給的默認值。

n 回車? 下一條指令? n----next

s 回車? 執(zhí)行一行源代碼并進入函數(shù)內(nèi)部??? s----step

當前被調(diào)用函數(shù)將實參賦于形參,并定位到第5行

bt 回車? 查看函數(shù)堆棧

編號0?? change 函數(shù)?? 定位到第6行

編號1?? main函數(shù)??? 定位到第15行

編號0在最上層,所以當前在change 函數(shù)中

f 編號?? 可以定位到哪一層函數(shù)f(frame)切換調(diào)用的上下文,進入相應的棧里,使用該命令可以打印棧層編號,當前的函數(shù)名,函數(shù)參數(shù)值,函數(shù)所在的文件及行號,函數(shù)執(zhí)行到的語句等等;

? 例:f 1

?

進入到編號1的函數(shù)中,即main函數(shù)? 并定位到15行的那條語句

q?? 退出調(diào)試

3-2使用gdb調(diào)試案例

&取地址符

0x 十六進制符號

a=0xbffff064? 給形參a賦的值是0xbffff064的內(nèi)存地址

b=0xbffff068? 給形參b賦的值是0xbffff068的內(nèi)存地址

int temp=*a;//將內(nèi)存地址a中的存儲的數(shù)據(jù)賦值給整型變量temp,即temp=5.

int temp =a;//將內(nèi)存地址a賦值給整型變量temp,即temp=0x bffff064

跟著老師的視頻做,一步一步的,就會理解該工具命令的含義了。

6 回復 有任何疑惑可以回復我~

你可以把這段視頻多看幾遍

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

gdb調(diào)試的問題

我要回答 關注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號