linux gdb的一些常規使用 cmake

2021-07-09 15:22:01 字數 1016 閱讀 6732

原文:

1.  cmake支援gdb的實現,

首先在cmakelists.txt下加入

set(cmake_build_type "debug") 

在下面加入:

set(cmake_cxx_flags_debug "$env -o0 -wall -g -ggdb")

set(cmake_cxx_flags_release "$env -o3 -wall")

原因是cmake 中有乙個變數 cmake_build_type ,可以的取值是 debug release relwithdebinfo >和 minsizerel。

當這個變數值為 debug 的時候,cmake 會使用變數 cmake_cxx_flags_debug 和 cmake_c_flags_debug 中的字串作為編譯選項生成 makefile;

2.  在gdb中間加入程式啟動引數

比如我們需要除錯乙個可執行檔案./a.out help

這時$gdb ./a.out

進入到gdb的命令列模式下,然後:

(gdb) set args help

就能加上可執行檔案需要的引數,如果要看argc[1]到argc[n]的引數,只需要

(gdb) show args

3. gdb中檢視字串,位址的操作,資料型別

比始有乙個int型的變數i,相要知道他的相關資訊,可以

(gdb) print i

列印出變數i的當前值

(gdb)x &i

與上面的命令等價。

如果有x命令看時,需要看一片記憶體區域,(如果某個地方的值為0,用x時會自動截斷了)

(gdb) x/16bx address

單位元組16進製制列印address位址處的長度為16的空間的記憶體,16表示空間長度,不是16進製制,x表示16進製制,b表示byte單位元組

gdb看變數是哪個資料型別 

(gdb) whatis i

即可知道i是什麼型別的變數

0 給主人留下些什麼吧!~~

git 一些常規指令

1.git初始化,新建乙個本地庫 git init 2.git help 檢視所有指令git help 3.git clone url 轉殖遠端庫 git clone 4.git remote add origin url 新增遠端庫 git remote add origin 5.git remo...

一些常規面試題

說說mysql主從同步怎麼做的吧?master提交完事務後,寫入binlog sl e連線到master,獲取binlog master建立dump執行緒,推送binglog到sl e sl e啟動乙個io執行緒讀取同步過來的master的binlog,記錄到relay log中繼日誌中 sl e再...

timeout的一些常規解決辦法

一般來說timeout並不會對伺服器造成什麼大的影響,但如果timeout過多導致程序檔案描述符不夠用或伺服器端口不夠用就需要注意了。下面是一些常規的timeout解決辦法。注意 不是長久之計 etc sysctl.conf net.ipv4.tcp tw reuse 1 表示開啟重用。允許將tim...