如何使用gdb列印Eigen中的變數

2021-08-02 08:43:38 字數 1410 閱讀 1034

eigen是乙個高層次的c ++庫,有效支援線性代數,矩陣和向量運算,數值分析及其相關的演算法。但是用gdb來debug用了這個庫的**卻不能夠很好把變數列印出來。這也是為什麼我喜歡用python的原因之一把!—。—

首先推薦使用cgdb而不是gdb,本質上他們是一樣的,不過cgdb除錯**的時候更加舒服!

gdb除錯**

cgdb除錯**

我是在linux系統下使用的,所以你只需要

sudo apt-get install cgdb

對於eigen,你要在你的目錄下,以我自己為例,我在/home/tony

下建立了乙個資料夾叫做eigen_configuration(你可以是任何名字),然後建立乙個python文件,叫做printers.py,將鏈結 上的內容複製進來。然後在/home/tony目錄下建立乙個叫做.gdbinit的文件,將以下內容複製進來

python

import sys

sys.path.insert(0, '/path/to/eigen/printer/directory')

from printers import register_eigen_printers

register_eigen_printers (none)

end

那麼以我為例

python

import sys

sys.path.insert(0, '/home/tony/eigen_configuration')

from printers import register_eigen_printers

register_eigen_printers (none)

end

需要注意的是你要在放置printers文件的資料夾中,再建乙個文件叫做_init.py, 裡面是空的就好了!以便系統能夠找到printers文件。

未使用前

使用後

在gdb中列印QString

gdb的print命令只能列印基本資料型別,像qstring這樣的複雜型別就不行了。如果在除錯過程中 命令列,或者xcode中 不能看qstring的值,豈不是很不爽。幸好,gdb提供了擴充套件功能,可以自定義巨集命令。把自定義的命令放到 home gdbinit檔案中,每次啟動gdb時就可以自動載...

Qt中gdb除錯列印log

背景 windows上qt程式無故crash,隨機crash不好定位出錯的原因,故使用gdb追蹤錯誤資訊。前提 生成debug版本的exe程式。步驟 開啟minggw控制台。進入待除錯程式資料夾,cd d code build test desktop qt 5 9 8 mingw 32bit de...

GDB工具如何使用斷點資訊

在linux平台下,使用最多的就是除錯工具gdb.通過命令gcc g test.c 缺省會生成a.out檔案,這個檔案由於引數 g的原因加入了除錯資訊。所以可以使用gdb來載入並除錯,但是在使用斷點的時候,你會很鬱悶。真的。比如下面先來看這個過程。test.c 1 include 2 3 void ...