gdb java_gdb继续而不是踩踏

我用 -O0 和 -ggdb args编译了所有内容,以摆脱优化并添加调试符号 . 我已经多次使用gdb来调试c代码,但这是我第一次在c上使用它 .

当我尝试使用gdb进行调试时,一切正常,除了“next”命令有时“继续”而不是转到下一个源代码行 . 调试器总是在断点处停止,但它似乎决定跳过许多行而不是下一个...例如我可能有类似的东西:

int foo::bar(list_class &list, int num){

int i;

num = num + 3;

for(i = 0; i < 5; i++){

list.add(num + i);

}

num = num + 42;

return num;

}

如果我打破了界限:

num = num + 42;

我从行开始“下一步”

num = num + 3;

它将完全跳过for循环并在断点处停止 . 如果我没有在线上设置中断,该函数将返回 . 如果我在线设置断点:

list.add(num + i);

程序将始终在断点处停止 . 有没有人有什么建议?提前致谢 .

编辑:

以下是gdb给我带来的一些错误 . 我不确定他们是否与问题有关 .

warning: can't find linker symbol for virtual table for `std::basic_string, std::allocator >' value

warning: can't find linker symbol for virtual table for `std::basic_string, std::allocator >::_Alloc_hider' value

warning: can't find linker symbol for virtual table for `std::_Rb_tree_node_base' value

warning: found `klee::PTree::PTree(klee::ExecutionState* const&)' instead

warning: can't find linker symbol for virtual table for `klee::KInstIterator' value

warning: found `klee::Executor::runFunctionAsMain(llvm::Function*, int, char**, char**)' instead

warning: can't find linker symbol for virtual table for `klee::TreeOStream' value

warning: found `std::string::compare(char const*) const' instead

warning: can't find linker symbol for virtual table for `klee::ImmutableMap<:memoryobject const klee::objectholder klee::memoryobjectlt>' value

warning: found `bool std::operator==, std::allocator >(std::basic_string, std::allocator > const&, char const*)' instead

warning: can't find linker symbol for virtual table for `klee::ImmutableTree<:memoryobject const std::pair klee::objectholder>, klee::_Select1st<:pair const klee::objectholder>, klee::MemoryObject const*>, klee::MemoryObjectLT>' value

warning: found `bool std::operator==, std::allocator >(std::basic_string, std::allocator > const&, char const*)' instead

编辑#2(已解决)

我通过升级到最新版本的gdb(7.4)解决了我的问题 . 我使用的是7.1-ubuntu版本 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值