当多个 Rust 源文件共享相同的名称时,我可以设置 LLDB 断点吗?
Can I set an LLDB breakpoint when multiple Rust source files share the same name?
背景: 在 Rust 中,您通常有多个名为 mod.rs
的源文件。例如:
app_name
src
main.rs
foo
mod.rs
bar
mod.rs
问题: 在设置 LLDB 断点时,我找不到区分一个 mod.rs
和另一个的方法:
$ cargo build
$ rust-lldb target/debug/app_name
(lldb) breakpoint set -f mod.rs -l 10
Breakpoint 1: 2 locations.
(lldb) breakpoint set -f foo/mod.rs -l 10
Breakpoint 2: no locations (pending).
WARNING: Unable to resolve breakpoint to any actual locations.
(lldb) breakpoint set -f src/foo/mod.rs -l 10
Breakpoint 3: no locations (pending).
WARNING: Unable to resolve breakpoint to any actual locations.
此问题最常见于 mod.rs
。更一般地说,只要多个源文件共享相同的名称,它就会出现。
问题:有没有办法在foo/mod.rs
的第10行而不是bar/mod.rs
的第10行设置断点?
您可以使用文件的绝对路径。就我而言,我在OS X 上的/tmp
目录中编译,实际上是/private/tmp
。这意味着我可以做这样的事情:
breakpoint set --file /private/tmp/debug/src/bar/mod.rs --line 2
我通过查看 DWARF 调试信息弄明白了这一点:
dwarfdump target/debug/debug.dSYM/Contents/Resources/DWARF/debug | grep mod.rs
如果这不起作用,还有一些解决方法:
改为在函数处中断:breakpoint set --name my_func
。您不太可能拥有相同的方法名称,但在这里您也可以使用模块名称:breakpoint set --name foo::my_func
.
禁用non-interesting 重复断点。 breakpoint set
建立一个逻辑断点,带有数字ID(如1
),然后符合条件的真正断点有一个子ID(如1.1
).您可以使用 breakpoint list
查看这些,然后使用 breakpoint disable 1.1
.
禁用其他
背景: 在 Rust 中,您通常有多个名为 mod.rs
的源文件。例如:
app_name
src
main.rs
foo
mod.rs
bar
mod.rs
问题: 在设置 LLDB 断点时,我找不到区分一个 mod.rs
和另一个的方法:
$ cargo build
$ rust-lldb target/debug/app_name
(lldb) breakpoint set -f mod.rs -l 10
Breakpoint 1: 2 locations.
(lldb) breakpoint set -f foo/mod.rs -l 10
Breakpoint 2: no locations (pending).
WARNING: Unable to resolve breakpoint to any actual locations.
(lldb) breakpoint set -f src/foo/mod.rs -l 10
Breakpoint 3: no locations (pending).
WARNING: Unable to resolve breakpoint to any actual locations.
此问题最常见于 mod.rs
。更一般地说,只要多个源文件共享相同的名称,它就会出现。
问题:有没有办法在foo/mod.rs
的第10行而不是bar/mod.rs
的第10行设置断点?
您可以使用文件的绝对路径。就我而言,我在OS X 上的/tmp
目录中编译,实际上是/private/tmp
。这意味着我可以做这样的事情:
breakpoint set --file /private/tmp/debug/src/bar/mod.rs --line 2
我通过查看 DWARF 调试信息弄明白了这一点:
dwarfdump target/debug/debug.dSYM/Contents/Resources/DWARF/debug | grep mod.rs
如果这不起作用,还有一些解决方法:
改为在函数处中断:
breakpoint set --name my_func
。您不太可能拥有相同的方法名称,但在这里您也可以使用模块名称:breakpoint set --name foo::my_func
.禁用non-interesting 重复断点。
breakpoint set
建立一个逻辑断点,带有数字ID(如1
),然后符合条件的真正断点有一个子ID(如1.1
).您可以使用breakpoint list
查看这些,然后使用breakpoint disable 1.1
. 禁用其他