我正在研究如何在macOS上调试.NET应用程序。到目前为止,我已经使用libsosplugin.dylib成功编译了LLDB 3.9,并了解了如何在其中打开应用程序。但是,我找不到列出源并将断点放入其中的方法。
$HOME/SDK/build/release/bin/lldb-3.9.1 \
-o "plugin load $HOME/SDK/coreclr/bin/Product/OSX.x64.Debug/libsosplugin.dylib" \
-o "process launch -s" \
dotnet ./bin/Debug/netcoreapp2.2/app.dll
当我用Crtl + C停止应用程序并为源输入l
时,它什么也没做。
Process 39465 stopped
* thread #1: tid = 0x979f6, 0x0000000102b85795 libcoreclr.dylib`WKS::gc_heap::mark_object_simple(unsigned char**) + 293, stop reason = signal SIGSTOP
frame #0: 0x0000000102b85795 libcoreclr.dylib`WKS::gc_heap::mark_object_simple(unsigned char**) + 293
libcoreclr.dylib`WKS::gc_heap::mark_object_simple:
-> 0x102b85795 <+293>: movq %rax, %rcx
0x102b85798 <+296>: orq $0x1, %rcx
0x102b8579c <+300>: movq %rcx, (%rdi)
0x102b8579f <+303>: testb $0x1, %al
(lldb) l
(lldb)
是否有可能在LLDB中看到dotnet应用程序源?
答案 0 :(得分:0)
该功能似乎没有任何调试信息-当然,没有任何lldb可以找到或读取。否则,lldb将无法从PC->源位置构建地图,因此基于源的操作将无法正常工作。
lldb仅支持DWARF和PDB调试格式(并且PDB正在开发中,并且在lldb-3.9.1(这是一个相当老的lldb)中不存在。)
我还没有尝试过在macOS上编译.NET应用程序,因此我不知道它为调试信息提供了哪些选项。您需要先弄清楚。