[Lldb-commits] [lldb] [lldb-dap] Prevent using an implicit `step-in`. (PR #143644)

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Fri Jun 13 02:54:27 PDT 2025


labath wrote:

> It is the combination of the first and third. For completeness.
> 
> we do an step-over, which lands us at an instruction, which happens to be the first instruction of an inlined function. lldb-dap takes the PC value and resolves it to a function/block on its own. This returns the inlined function line entry (because the resolving function tries to be as accurate as possible).
> 
> This only happens in lldb-dap not lldb.

okay, so would something like this be sufficient to reproduce the issue (you can put the functions in different files as needed):
```
void __attribute__((noinline)) fn1() {}
void __attribute__((always_inline)) fn2() { fn1(); }

int main() {
  fn1();
  fn2();
}
```

Stop and the `fn1` line, step over the call to fn1(), which should land you at the call to fn1 (inlined through fn2, you can use a different function to make it clearer). lldb-dap should show you stopped at the fn2() line. Probably best to build the whole program with -O1 (CFLAGS_EXTRAS=-O1), to ensure the compiler doesn't insert any unnecessary goo between the two calls.

https://github.com/llvm/llvm-project/pull/143644


More information about the lldb-commits mailing list