C++ 使用阵列扩展stl-views.gdb
我想和帕雷一起延长比赛时间 如何确定gdb中std::array的大小(N)C++ 使用阵列扩展stl-views.gdb,c++,arrays,stl,gdb,C++,Arrays,Stl,Gdb,我想和帕雷一起延长比赛时间 如何确定gdb中std::array的大小(N) # # std::array<> # define parray if $argc == 0 help parray else set $size = ??? .. # #std::数组 # 定义阵列 如果$argc==0 帮助帕雷 其他的 设置$size=??? .. 感谢您的帮助尝试使用设置$size=$arg0.size() 我已经用以下代码进行了测试(其中未明确使用.s
#
# std::array<>
#
define parray
if $argc == 0
help parray
else
set $size = ???
..
#
#std::数组
#
定义阵列
如果$argc==0
帮助帕雷
其他的
设置$size=???
..
感谢您的帮助尝试使用
设置$size=$arg0.size()
我已经用以下代码进行了测试(其中未明确使用.size()
)
#包括
#包括
#包括以获得尺寸。也就是说,使用
set $size = sizeof($arg0._M_elems) / sizeof(*$arg0._M_elems)
gdb定义代码变为
define parray
if $argc == 0
help parray
else
set $size = sizeof($arg0._M_elems) / sizeof(*$arg0._M_elems)
print($size)
end
很抱歉,因此我得到“无法计算函数--可能是内联的”(Cannot evaluate function--may be inlined)()您只能使用现有正在运行的进程调用函数,并且如果这些函数包含在二进制文件中(例如,如果它们没有被链接器丢弃或被编译器内联)。但是,GDB允许您编写XFrimes,这是C++方法不可用时使用的C++方法的Python实现。此外,gdb已经为标准库中的许多方法提供了xmethods,包括许多容器的size()
方法。我已经用.size
这样的方法进行了测试,即使在从核心文件进行调试时也有效。我已经用一种即使不能使用.size()
的方法更新了答案。
set $size = sizeof($arg0._M_elems) / sizeof(*$arg0._M_elems)
define parray
if $argc == 0
help parray
else
set $size = sizeof($arg0._M_elems) / sizeof(*$arg0._M_elems)
print($size)
end