在使用 rust-gdb 调试时,如何进入一个在 return 值中调用的函数?
How do I step into a function called in a return value when debugging with rust-gdb?
在下面的代码中:
match fnA(size) {
Some(arr) => SomeBlock::new(size, &arr, false).as_ptr().add(1) as *mut c_void,
None => ptr::null::<c_void>() as *mut c_void,
}
我想用rust-gdb
进入SomeBlock::new(size, &arr, false)
。当我 运行 它正常时,我能够进入 fnA
,但是如果我在 Some(arr)
在线时尝试进入,gdb
就结束了运行完成程序的其余部分并退出。
我知道我可以直接在 SomeBlock::new
处插入一个断点,但我很好奇是否有更简洁的方法。
根据 GDB documentation on Rust:
The Rust expression evaluator does not support “statement-like” expressions such as if
or match
, or lambda expressions.
您似乎无法进入 match
表达式中的任何内容。请注意,您可以进入 fnA
,因为它是在其输出在匹配块内匹配之前进行评估的。
在下面的代码中:
match fnA(size) {
Some(arr) => SomeBlock::new(size, &arr, false).as_ptr().add(1) as *mut c_void,
None => ptr::null::<c_void>() as *mut c_void,
}
我想用rust-gdb
进入SomeBlock::new(size, &arr, false)
。当我 运行 它正常时,我能够进入 fnA
,但是如果我在 Some(arr)
在线时尝试进入,gdb
就结束了运行完成程序的其余部分并退出。
我知道我可以直接在 SomeBlock::new
处插入一个断点,但我很好奇是否有更简洁的方法。
根据 GDB documentation on Rust:
The Rust expression evaluator does not support “statement-like” expressions such as
if
ormatch
, or lambda expressions.
您似乎无法进入 match
表达式中的任何内容。请注意,您可以进入 fnA
,因为它是在其输出在匹配块内匹配之前进行评估的。