设置条件时lldb失败

时间:2019-06-27 01:53:11

标签: c++ lldb

我使用clang++ -std=c++17 -g try.cpp编译了文件 现在在lldb上,

(lldb) b Board.cpp:27
Breakpoint 1: where = a.out`Board::move(Point const&, Point const&, std::__1::vector<std::__1::vector<float, std::__1::allocator<float> >, std::__1::allocator<std::__1::vector<float, std::__1::allocator<float> > > > const&, int, float) + 40 at Board.cpp:27:28, address = 0x0000000100001558
(lldb) b Board.cpp:27 -c 'prob==0.1'
Breakpoint 2: no locations (pending).
WARNING:  Unable to resolve breakpoint to any actual locations

我正在使用Mojave,

~ lldb --version
lldb-1001.0.13.3
  Swift-5.0

为什么设置-c失败,却没有失败?

1 个答案:

答案 0 :(得分:2)

这是IEnumerable<TInner>命令中的错误。 inner命令不是真正的lldb断点设置命令,而是bb是基于lldb“ regex”的命令,它试图模拟gdb断点解析器-然后分派给break set。添加它是为了使来自gdb的人使用lldb的时间更短。但是显然,它不能正确处理-c标志。按照您的指定设置断点后,您将看到:

b

因此break set认为您正在尝试使用整个字符串设置“函数名”断点。请用http://bugs.llvm.org提交。

您可以使用(lldb) b Board.cpp:27 -c 'prob==0.1' Breakpoint 1: no locations (pending). WARNING: Unable to resolve breakpoint to any actual locations. (lldb) break list Current breakpoints: 1: name = 'Board.cpp:27 -c prob==0.1', locations = 0 (pending) 来设置要设置的断点,例如:

b