-
p=print s=step n=next l=list bt=顯示函數(shù)堆棧查看全部
-
棧保存當(dāng)前程序運(yùn)行的狀態(tài),當(dāng)前內(nèi)存空間存儲(chǔ)的值 數(shù)據(jù)塊保存全局變量,常量查看全部
-
靜態(tài)變量、常量、全局變量默認(rèn)情況下位于數(shù)據(jù)段查看全部
-
gdb ./main2.o查看全部
-
gcc -g main.c -o main.o查看全部
-
set nu 打開(kāi)行號(hào)查看全部
-
常量,全局變量存儲(chǔ)在數(shù)據(jù)段。查看全部
-
*pa=&a p pa 打印指針p里面的內(nèi)容 既a的內(nèi)存地址 p &pa 打印保存這一內(nèi)存地址的地址 pa 保存的是一個(gè)地址 &pa 是放這個(gè)地址條的另一個(gè)地址(房子)查看全部
-
1.打印代碼段的地址 查看某個(gè)函數(shù)編譯后的二進(jìn)制指令段在內(nèi)存中代碼段的地址: (gdb) p &函數(shù)名 2.打印數(shù)據(jù)段的地址 查看某個(gè)常量或全局變量在內(nèi)存中數(shù)據(jù)段的地址: (gdb) p &常量名(全局變量名) 編譯器會(huì)對(duì)源代碼進(jìn)行優(yōu)化,編譯后的指令順序與我們編寫(xiě)代碼的順序可能不同。 編譯器會(huì)將同一類型的變量聲明放到一起。 64位操作系統(tǒng)下,指針占8個(gè)字節(jié)。查看全部
-
高位內(nèi)存空間分配給操作系統(tǒng)內(nèi)核使用,低位內(nèi)存空間分配給用戶程序使用。 用戶程序的內(nèi)存空間從低到高又劃分為:代碼段、數(shù)據(jù)段、堆、自由可分配內(nèi)存和棧。 我們編寫(xiě)的函數(shù)在編譯后存到磁盤(pán),運(yùn)行程序時(shí),就把源代碼編譯后的二進(jìn)制數(shù)據(jù)加載到內(nèi)存空間中的代碼段中。聲明的全局變量或常量放置在數(shù)據(jù)段。每次調(diào)用新的函數(shù),就將新的函數(shù)壓入棧區(qū)。查看全部
-
使用gdb調(diào)試步驟: 1、使用帶-g選項(xiàng)的gcc命令編譯源文件:gcc -g main.c -o main.out 2、使用gdb工具調(diào)試:gdb ./main2.out 3、調(diào)試過(guò)程中:(gdb): l 列出當(dāng)前項(xiàng)目源代碼(list)→再按l或直接按回車:繼續(xù)執(zhí)行上一命令 break 12 將斷點(diǎn)打在第12行 start 單步調(diào)試 p a 顯示當(dāng)前a的值(print)(當(dāng)前行的命令未完全執(zhí)行) n 進(jìn)入下一行(next) s 進(jìn)入當(dāng)前函數(shù)內(nèi)部(step) bt 查看函數(shù)堆棧(在上方的函數(shù)先執(zhí)行) f 1 切換到1號(hào)棧 q 退出調(diào)試查看全部
-
array指靜態(tài)地址,指針是可變地址查看全部
-
代碼2查看全部
-
代碼2查看全部
-
代碼1查看全部
舉報(bào)
0/150
提交
取消