Eigen3和Clion:如何在Clion IDE中显示矩阵内容?

4

我按照更新GDB以便与Eigen3一起使用的说明进行了操作。然而,CLion IDE无法在调试面板中加载eigen矩阵的内容。

本应该是快速验证和调试结果的过程,现在变成了耗时的手动打印过程(或更糟糕的情况:在cygwin的终端中以交互模式运行gdb)。

肯定有一种方法可以使eigen能够与CLion的调试器一起使用吧?


你能试着做一下吗?我尝试了几种方法,但都没能让它正常工作。 - bartfer
2个回答

5

如果您正在寻找使用GDB和CLion解决问题的简单方法,@Chris以及其他人,我在Ubuntu上进行了测试,但它应该适用于任何系统。

enter image description here enter image description here

解决方案的一部分已经在Eigen存储库中,只需要稍加修改即可。

Eigen打印机

我更改的是Python模块导入逻辑:

  1. printers.py保存到新创建的printers目录下,可以选择任何目录,比如/any_full_path/printers
  2. 确保创建并清空__init__.py
  3. 在您的主目录中创建一个~/.gdbinit
  4. 复制并粘贴下面略微更改过的(与原始存储库不同)脚本
python
import sys
sys.path.insert(0, '/any_full_path/printers')
from printers import register_eigen_printers
register_eigen_printers(None)
end

如有需要,可以随时要求更多截图或其他说明,因为这应该非常简单易行。


1
我不确定我认为这个简单或可移植,因为它涉及使用某个文件自定义GDB并将其放在某个地方。想象一下,在所有硬件都已更换并再次克隆时,5年后回忆起这个问题。理想情况下,解决方案应该是代码 -- 也许是一种重载?我好像记得解决方案是这样的,因为我已经忘记了这个问题。 - Chris

0

我已经成功在Windows上使用这个项目https://github.com/fantaosha/LLDB-Eigen-Pretty-Printer,让lldb在CLion中工作。

您需要在主目录下创建.lldbinit文件,并添加类似的行:

command script import "C:\Users\user.lldb-eigen-data-formatter\LLDB_Eigen_Pretty_Printer.py"(当然,根据GitHub上的自述文件,需要克隆此文件夹和文件)

现在,Clion将导入此脚本,但是您会遇到一些错误,您需要按照此处所述删除正则表达式中的问号: https://github.com/fantaosha/LLDB-Eigen-Pretty-Printer/issues/4#issuecomment-747329527 现在,CLion将能够显示矩阵、向量等值(但在Windows上至少没有换行符)。

对于gdb而言,应该是uta所回答的,但我没有尝试过,因为我正在使用lldb。如果你没有使用与此相关的特定内容,也许可以尝试将调试器更改为lldb。 希望这在某种程度上有所帮助!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接