[lldb-dev] lldb10 can not hit break point on windows platform

Adrian McCarthy via lldb-dev lldb-dev at lists.llvm.org
Mon Oct 19 11:43:28 PDT 2020


On Windows, LLVM is migrating to its own debug info reading code (the
Native PDB reader) instead of relying on DIA (a Microsoft-provided
Windows-only DLL for accessing debug info), so that might explain the
difference between the older versions and the current.

I don't know enough about LLDB's model to understand how debug info for
run-time generated code is handled.  Certainly, at the time your transcript
shows trying to set the breakpoint, the TestFunction.cpp code hasn't yet
been compiled, so it's not a surprise that it cannot resolve the breakpoint
at that time.  When TestFunction.cpp gets JITted into code, LLDB would have
to (1) be informed of the new code, (2) locate the debug info, and (3) try
again to resolve the pending breakpoint.  For me, there are a lot of
unknowns in that sequence, so I cannot say whether it's expected to work in
the current version.  If the JITted code is "loaded" dynamically the same
way a DLL can be, then step 1 should work.  But if the JIT code is brought
into process memory some other way, then I think it's likely the Windows
debugger isn't getting notified and thus cannot do steps 2 and 3.

Is it possible to reduce the problem down to a minimal sample program that
reproduces the problem and to include it in a bug report?

Thanks,
Adrian.



On Sat, Oct 17, 2020 at 1:51 AM le wang via lldb-dev <
lldb-dev at lists.llvm.org> wrote:

> Hello,everyone:
>       I have a problem when download llvm10.0.1 and use lldb to debug my
> process on windows10 x64 platform. but with no debug point hit.
> the command is
> (lldb)target create "D:/code/MLExecuteTest.exe"
> Current executable set to 'D:/code/MLExecuteTest.exe'  (x86_64)
> (lldb)br s -fE:/test/TestFunction.cpp -l1
> Breakpoint 1: no locations(pending).
> WARNING :  Unable to resolve breakpoint to any actual locations.
> (lldb)r
> Process 16228 launched 'D:/code/MLExecuteTest.exe'
> Process 16228 exited with status = 1(0x00000001)
> my using detail is  this below:
> MLExecuteTest.exe is my process which will first compile the script
>  TestFunction.cpp on debug mode  and generate binary code in its memory, of
> course binary code has debug information, and then  it use JIT
> ExecuteEngine to execute the binary code. I want to know, is llvm 10.0.1
> support this using on windows platform. since before we use llvm5.0 on
> windows platform is OK, breakpoints can be hit. but while update version to
> 10.0.1, with same operation ,breakpoints can not be hit. so is llvm10.0.1
> support or has any changes on this using on windows platform?
>
> Thanks,
> le wang
> _______________________________________________
> lldb-dev mailing list
> lldb-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20201019/564c840c/attachment.html>


More information about the lldb-dev mailing list