labath added a comment.

In D74136#2118983 <https://reviews.llvm.org/D74136#2118983>, @jankratochvil 
wrote:

> The filename should not be checked from `SymbolContext::function` but rather 
> from `SymbolContext::line_entry`.  As that is cheaper.  And when one asks for 
> breakpoint at `1a.h:1` then it is enough to check `.debug_line` (which needs 
> to be checked anyway) and why to look into `.debug_info` for the function 
> name etc. at all?
>  I think there is even a bug due to the Function being involved and not just 
> line_entry:
>
>   tail -n99 1b.c 1b.h;clang -o 1b 1b.c -Wall 
> -g;~/redhat/llvm-monorepo2-clangassert/bin/lldb -batch ./1a -o 'breakpoint 
> set -f 1b.h -l 1' 
>   ==> 1b.c <==
>   static void func(void) {}
>   int main(void) {
>   #include "1b.h"
>     return 0;
>   }
>   ==> 1b.h <==
>     func();
>   (lldb) target create "./1a"
>   Current executable set to '/home/jkratoch/t/1a' (x86_64).
>   (lldb) breakpoint set -f 1b.h -l 1
>   Breakpoint 1: no locations (pending).
>   WARNING:  Unable to resolve breakpoint to any actual locations.
>


When setting a breakpoint by file+line I would definitely expect this to work 
as you describe.

However, when setting a breakpoint by name+file I think that a more natural 
behavior would be to check the file that the function was defined in. I.e. in 
your example "--name main --file 1b.h" should fail, but "--name main --file 
1b.c" should succeed.

I guess this all goes back to what Jim said earlier about the "--file" argument 
in set-by-name and set-by-line behaving differently even though that's not 
obvious from how the command is structured.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D74136/new/

https://reviews.llvm.org/D74136



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to