- 论坛徽章:
- 0
|
GDB 在调用成员函数的时候需要首先找到函数的代码才能执行。如果一个成员函数是内联的、并且没有在程序中被使用,那么 GDB 将找不到其代码,也就不能执行此成员函数。
对于这个问题,有以下两种解决方法:
- 在源程序的查看之前的位置使用一次 at() 成员函数。
- 执行 print list 可以列出 vector 的内部数据结构,使用这些结构也可以查看各个元素。假设列出了如下内容:
$1 = {<std::_Vector_base<int,std::allocator<int> >> = {
_M_impl = {<std::allocator<int>> = {<__gnu_cxx::new_allocator<int>> = {<No data fields>}, <No data fields>}, _M_start = 0x8095040,
_M_finish = 0x809505c, _M_end_of_storage = 0x8095060}}, <No data fields>}
可以这样查看第一个元素:print list._M_impl._M_start[0]
为方便使用,可以定义一个宏来使用:
define print_vector
print $arg0._M_impl._M_start[$arg1]
end
这样,print_vector list 2 就可查看第三个元素。
|
|