android lldb断点,lldb没有停在我的断点上

在自建的Clang程序中,用户试图通过LLDB设置断点以在Sema::DiagnoseAssignmentResult方法中的特定行暂停执行,但无论通过方法签名还是文件和行号设置断点,程序都无法在预期位置停止。尽管LLDB显示出正确的源代码位置,断点并未生效。用户寻求解决无法触发断点问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我从源代码构建了Clang程序,其中包含完整的调试信息(Clang IIUC的默认构建类型) . 我通过注意模块中有编译单元来检查可执行文件中是否有可用的调试信息:

$ lldb /opt/bin/clang++

(lldb) script lldb.target.module['/opt/bin/clang++'].GetNumCompileUnits()

1341

我已经使用 Sema::DiagnoseAssignmentResult 方法(在我的副本中的第10853行)中使用printf语句检测了Clang源代码树中的文件 lib/Sema/SemaExpr.cpp . 我知道这个方法在我的测试文件 test.cc 上被调用,但是我不能让调试器在这个方法的断点上停止!我试过两种方式设置断点,

$ lldb /opt/bin/clang++

(lldb) breakpoint set -m DiagnoseAssignmentResult

Breakpoint 2: where = clang++`clang::Sema::DiagnoseAssignmentResult(clang::Sema::AssignConvertType, clang::SourceLocation, clang::QualType, clang::QualType, clang::Expr*, clang::Sema::AssignmentAction, bool*) + 87 at SemaExpr.cpp:10858, address = 0x0000000100ab9947

(lldb) process launch -- ./test.cc

<< message from my printf statement >>

... then clang++ runs to completion and exits, no breakpoint hit ...

(lldb)

我注意到 lldb 确实在源代码中找到了正确的位置,但是当它通过该方法时没有停止 . 我还尝试通过指定文件和行号来设置断点,

(lldb) breakpoint set -f SemaExpr.cpp -l 10853

Breakpoint 3: where = clang++`clang::Sema::DiagnoseAssignmentResult(clang::Sema::AssignConvertType, clang::SourceLocation, clang::QualType, clang::QualType, clang::Expr*, clang::Sema::AssignmentAction, bool*) + 87 at SemaExpr.cpp:10858, address = 0x0000000100ab9947

它再次“奏效”,但并未停止 . 我在这里做了一些根本错误的事吗?如何触发断点?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值