terminate called after throwing an instance of 'serialization::SerializationException' session
what(): error geometry typeANHUI 多線程
GDB是GNU開源組織發佈的一個強大的UNIX下的程序調試工具。 函數
通常來講,GDB主要幫忙你完成下面四個方面的功能: 工具
一、啓動你的程序,能夠按照你的自定義的要求爲所欲爲的運行程序。
二、可以讓被調試的程序在你所指定的調置的斷點處停住。(斷點能夠是條件表達式)
三、當程序被停住時,能夠檢查此時你的程序中所發生的事。
四、動態的改變你程序的執行環境。 優化
建立文件 ~/.gdbinit spa
填入如下內容: 線程
set history filename ~/.gdb_history 指針
set history save 調試
下次打開gdb,就能用向上箭頭找回上次session的命令啦! 進程
$ gdb tst 開始對tst程序進行調試
(gdb)set args -->設置程序運行所需參數。
(gdb) show args --> 顯示已設置參數。
(gdb) break main.c : 16 --> 設置斷點,在源程序第16行處。
(gdb) break func --> 設置斷點,在函數func()入口處。
(gdb) break line if條件 --> 在第line行設置條件斷點。
(gdb) tb line --> 在第line行設置臨時break。
(gdb) info break --> 查看斷點信息。
(gdb) delete break 1 --> 刪除斷點1。
(gdb) r --> 運行程序,相關配置文件。
(gdb) c --> 繼續運行程序。
(gdb) l --> 查看源代碼。
(gdb) set listsize count -->設置顯示代碼行數。
(gdb) n --> 單條語句執行,next命令簡寫。
(gdb) 回車 --> 重複上條命令。
(gdb) u line --> 直接跳到line行
(gdb) step --> 進入函數。
(gdb) finish --> 退出函數。
(gdb) p i --> 打印變量i的值。
(gdb) bt --> 查看函數堆棧。
(gdb) info locals --> 查看堆棧中局部變量。
(gdb) q --> 退出gdb。
(gdb) ptype i -->查看變量i的類型聲明
(gdb)x/10xb mem -->查看mem指針開始的內存,10個byte,以16進制顯示。x/表示查看內存,10表示10個單元,b表示單元的單位爲byte,x表示16進制查看。其餘格式
1) 編譯程序時要加-g,才能進行調試,例如gcc -g tst.c -o tst。上線時,COMAKE中要加入-g,這樣才能生成core文件。
2) 編譯程序時不能加-O2,不然優化後的程序在運行過程當中不按源代碼順序執行,不便於調試。但程序調試完畢後需從新加上-O2進行編譯,不然程序執行速度會下降2到3倍。
3) 調試正在運行的進程:gdb attach 進程號。獲取進程號命令:ps –ef|grep 程序名。
4) 多線程調試時,經過set scheduler-locking on來鎖定線程,便於在當前線程下進行調試。
5) 對core文件調試:gdb 程序名 core文件名。where命令查看程序崩潰時函數堆棧。