Lldb:设置条件断点以字符串相等作为条件
Lldb : Setting conditional breakpoint with string equality as condition
我想用 lldb 设置一个条件断点。这通常使用 -c
选项完成:
breakpoint set -f myFile.cpp -l 123 -c 'a==3'
但是,在我的例子中,我想测试一个 std::string
对象是否等于某个字符串值但是这样做
breakpoint set -f myFile.cpp -l 123 -c 'a=="hello"'
不工作...... Lldb 不会抱怨(而 gdb 会 return 一个错误)但它会在到达断点时忽略条件字符串并过早中断......
此题与this one相似,但使用的是 lldb 而不是 gdb。那里提出的解决方案
breakpoint set -f myFile.cpp -l 123 if strcmp(a, "hello")==0
似乎对 lldb 无效
使用的 Lldb 版本:3.4
(lldb) br s -n main -c '(int)strcmp("test", var)==0'
Breakpoint 1: where = a.out`main + 11 at a.c:3, address = 0x0000000100000f8b
(lldb) br li
Current breakpoints:
1: name = 'main', locations = 1
Condition: (int)strcmp("test", var)==0
1.1: where = a.out`main + 11 at a.c:3, address = a.out[0x0000000100000f8b], unresolved, hit count = 0
(lldb)
您可以在事实之后添加条件表达式。喜欢
(lldb) br s -n main
Breakpoint 1: where = a.out`main + 11 at a.c:3, address = 0x0000000100000f8b
(lldb) br mod -c '(int) strcmp("test", var) == 0'
(lldb) br li
Current breakpoints:
1: name = 'main', locations = 1
Condition: (int) strcmp("test", var) == 0
1.1: where = a.out`main + 11 at a.c:3, address = a.out[0x0000000100000f8b], unresolved, hit count = 0
(lldb)
breakpoint modify
在末尾采用断点编号/断点编号列表,如果指定了 none(这是我在这里所做的),则默认为最新的断点。
我想用 lldb 设置一个条件断点。这通常使用 -c
选项完成:
breakpoint set -f myFile.cpp -l 123 -c 'a==3'
但是,在我的例子中,我想测试一个 std::string
对象是否等于某个字符串值但是这样做
breakpoint set -f myFile.cpp -l 123 -c 'a=="hello"'
不工作...... Lldb 不会抱怨(而 gdb 会 return 一个错误)但它会在到达断点时忽略条件字符串并过早中断......
此题与this one相似,但使用的是 lldb 而不是 gdb。那里提出的解决方案
breakpoint set -f myFile.cpp -l 123 if strcmp(a, "hello")==0
似乎对 lldb 无效
使用的 Lldb 版本:3.4
(lldb) br s -n main -c '(int)strcmp("test", var)==0'
Breakpoint 1: where = a.out`main + 11 at a.c:3, address = 0x0000000100000f8b
(lldb) br li
Current breakpoints:
1: name = 'main', locations = 1
Condition: (int)strcmp("test", var)==0
1.1: where = a.out`main + 11 at a.c:3, address = a.out[0x0000000100000f8b], unresolved, hit count = 0
(lldb)
您可以在事实之后添加条件表达式。喜欢
(lldb) br s -n main
Breakpoint 1: where = a.out`main + 11 at a.c:3, address = 0x0000000100000f8b
(lldb) br mod -c '(int) strcmp("test", var) == 0'
(lldb) br li
Current breakpoints:
1: name = 'main', locations = 1
Condition: (int) strcmp("test", var) == 0
1.1: where = a.out`main + 11 at a.c:3, address = a.out[0x0000000100000f8b], unresolved, hit count = 0
(lldb)
breakpoint modify
在末尾采用断点编号/断点编号列表,如果指定了 none(这是我在这里所做的),则默认为最新的断点。