[lldb-dev] Setting breakpoint on file and function name doesn't work as expected.
Jan Kratochvil via lldb-dev
lldb-dev at lists.llvm.org
Mon Nov 4 07:45:28 PST 2019
On Mon, 04 Nov 2019 16:16:30 +0100, Konrad Kleine via lldb-dev wrote:
> I read the LLDB troubleshooting page [1] and found interesting quotes:
>
> > When setting breakpoints in implementation source files (.c, cpp, cxx,
> .m, .mm, etc), LLDB by
> > default will only search for compile units whose filename matches.
> > [...]
> > % echo "settings set target.inline-breakpoint-strategy always" >>
> ~/.lldbinit
...
> I now added the breakpoint strategy and ran the above command without the
> -x in order to pick up
> the LLDB init code. Still no luck.
That doc is obsolete, LLDB has this setting by default:
(lldb) settings show target.inline-breakpoint-strategy
target.inline-breakpoint-strategy (enum) = always
It has been changed:
https://github.com/llvm/llvm-project/commit/ad6eee639952090684aa84c35218ec327a017ca1
This setting does work but only for the --line option:
==> inc.C <==
#include "inc2.C"
int main() {
func();
}
==> inc2.C <==
static volatile int i;
static void func() {
i++;
}
$ clang++ -o inc inc.C -Wall -g;lldb ./inc
(lldb) target create "./inc"
Current executable set to './inc' (x86_64).
(lldb) settings set target.inline-breakpoint-strategy headers
(lldb) breakpoint set --file inc2.C --line 3
Breakpoint 1: no locations (pending).
WARNING: Unable to resolve breakpoint to any actual locations.
(lldb) settings set target.inline-breakpoint-strategy always
(lldb) breakpoint set --file inc2.C --line 3
Breakpoint 2: where = inc`func() + 4 at inc2.C:3:4, address = 0x0000000000401124
(lldb) _
To make it working also for the -n option will require some fix, maybe some
code around lldb/source/Commands/CommandObjectBreakpoint.cpp line 500, dunno.
Jan
More information about the lldb-dev
mailing list