调试 C 代码通常涉及检查数据结构的内容。当处理像 C 向量这样的复杂结构时,这变得尤其具有挑战性。为了解决这个问题,本文探讨了如何打印 std::vector
首先,确定指向存储向量元素的内部数组的指针。在 GCC 4.1.2 中,可以通过表达式 myVector._M_impl._M_start 访问该指针。
要打印整个向量,请使用以下 GDB 命令:
print *(myVector._M_impl._M_start)@myVector.size()
此命令打印向量的元素,从地址 myVector._M_impl._M_start 开始,一直到 myVector.size() 元素。
要仅打印向量的前 N 个元素,请修改命令如下:
print *(myVector._M_impl._M_start)@N
此命令打印向量的前 N 个元素。
说明:
这些命令之所以有效,是因为它们利用了向量的实现方式在海湾合作委员会 4.1.2 中。内部数组存储在向量的 _M_impl._M_start 字段中,GDB 的 print P@N 命令允许您打印从指针 P 开始的数组的 N 个元素。
快捷键:
您还可以在 GDB 初始化文件 (.gdbinit) 中创建快捷方式以简化调试过程。将以下行添加到您的 .gdbinit 文件中:
define p P@N
这将为 print P@N 命令创建一个别名,允许您更方便地使用 p 打印数组元素。
以上是如何在 GDB 中打印 C `std::vector` 的内容?的详细内容。更多信息请关注PHP中文网其他相关文章!