Как мне перейти к функции, вызываемой в возвращаемом значении при отладке с rust-gdb? - PullRequest
1 голос
/ 16 марта 2020

В следующем коде:

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, но мне было любопытно, если бы был более чистый способ сделать это.

1 Ответ

1 голос
/ 16 марта 2020

Согласно документации GDB по Rust :

Средство оценки выражений Rust не поддерживает выражения типа операторов, такие как if или match, или лямбда-выражения.

Кажется, что вы не можете войти ни во что, что находится внутри match выражения. Обратите внимание, что вы можете перейти к fnA, так как он вычисляется до того, как его выходные данные будут сопоставлены внутри блока соответствия.

...