linux下c调试
調(diào)試是每個程序員都會面臨的問題. 如何提高程序員的調(diào)試效率, 更好更快地定位程序中的問題從而加快程序開發(fā)的進(jìn)度, 是大家共同面對的問題. 可能Windows用戶順口就會說出:用VC唄 :-) , 它提供了設(shè)置斷點(diǎn), 單步跟蹤等的圖形界面, 使調(diào)試起來直觀易用. 但Linux用戶可能要生悶氣了 O:-) : 難道我們Linux程序員就只能使用原始的調(diào)試方法, 在代碼中加入printf信息嗎?難道Linux下就沒有好的C語言調(diào)試工具嗎? 當(dāng)然不是了. GNU早就組織開發(fā)了一套C語言編譯器(Gcc)和調(diào)試工具(Gdb). Gdb雖然沒有圖形化的友好界面, 但是它強(qiáng)大的功能也足以與微軟的VC工具相媲美, 給Linux程序員帶來了福音. 下面通過一個簡單的例子, 演示一下Gdb的使用流程: 示例文件 demo.c 的源代碼如下: #include <stdio.h>int sum(int, int);int
main()
{int result;int a = 1, b = 2;result = sum(a, b);printf("%d + %d = %d\n", a, b, result);return 0;
}int
sum(int a, int b)
{return a + b;
}
編譯源文件, 生成可執(zhí)行文件 $ gcc -g -Wall -o demo demo.c 雖然這段程序沒有錯誤, 但調(diào)試完全正確的程序可以更加了解Gdb的使用流程. 接下來就啟動Gdb進(jìn)行調(diào)試. 注意:
- Gdb進(jìn)行調(diào)試的是可執(zhí)行文件, 而不是".c"源文件, 因此, 需要先通過Gcc編譯生成可執(zhí)行文件才能用Gdb進(jìn)行調(diào)試.
- 一定要加上選項(xiàng)"-g", 這樣編譯出的可執(zhí)行代碼中才包含調(diào)試信息, 否則Gdb無法載入該可執(zhí)行文件.
- 不能使用 -O2選項(xiàng)對可執(zhí)行文件進(jìn)行優(yōu)化, 因?yàn)閮?yōu)化之后可執(zhí)行文件里的符號表信息將被刪除, 這樣Gdb就無法找到使可執(zhí)行文件與源文件之間的關(guān)聯(lián)了, 也就不能調(diào)試了.
Related Posts
總結(jié)
- 上一篇: 重庆云宇宙数据中台:iwemeta.co
- 下一篇: PHP下socket编程