本文源於thinking in c++ chapter 3 和平時寫程式所得,會持續更新
書中3.9除錯技巧 p106
c的assert()巨集
方便的除錯巨集,引數為乙個斷言為真的表示式,如果斷言不為真,則發出乙個錯誤資訊告訴斷言是什麼並且程式終止。
#include #include using namespace std;
int main()
amrzs@ubuntu:cc$ g++ main.cpp
amrzs@ubuntu:cc$ ./a.out
a.out: main.cpp:11: int main(): assertion `i != 100' failed.
已放棄 (核心已轉儲)
在#include之前插入
#define ndebug 或者在編譯器命令列中定義ndebug,可以消除巨集產生的**
#include #define ndebug
#include using namespace std;
int main()
amrzs@ubuntu:cc$ g++ main.cpp
amrzs@ubuntu:cc$ ./a.out
100把變數和表示式轉換為字串
在乙個預處理器的巨集中的引數前面使用乙個#,預處理器會把這個引數轉換成乙個字元陣列。
#define p(a) cout << #a << ": " << (a) << endl;
當不想除錯時,也可以插入乙個#ifdef使得定義的p(a)不起作用。
除錯標記:預處理器除錯標記 和 執行期除錯標記
常用的標記名為debug(不能使用ndebug,是c中的保留字)
#define debug
//...
#ifdef debug
//...debugging code
#endif // debug
c/c++還允許在編譯器的命令列中使用#define和#undef標記,使用可以用乙個單獨的命令重新編譯**並插入除錯資訊 GDB除錯使用技巧 專職C C 部落格
gdb除錯使用技巧 專職c c 部落格 gdb除錯使用技巧 現在的linux下面開發,除錯程式還是gdb好啊!杯具的slickedit,linux下面有不少問題。只好放棄!1 使用tui模式可以很方便的差看 啟動他方式有兩種 第一種是在啟動的時候帶引數 tui,如 a gdb tui 第二種是在gd...
gdb 除錯c c 的一些小技巧
ptype obj class struct 檢視obj class struct的成員,但是會把基類指標指向的派生類識別為基類 set print object on 這個選項可以看到派生物件的真實類名,雖然ptype也可以列印出物件 set print pretty on 以樹形列印物件的成員,...
C C 編碼技巧
宣告 其中有些內容並不是本人原創,而是學習的別人的經驗,或者是從書上看到的總結在此,既然拿出來共享,本人不再區分本人原創部分,而且有些技巧已經是眾所周知,或者已經用了很長時間了,也弄不清出處了,這些對原創者一併給予感謝!1.char str 20 char cp str 2 這樣比使用 char c...