Есть ли способ перешагнуть через источник dotnet в LLDB на macOS - PullRequest
0 голосов
/ 04 января 2019

Я исследую, как отлаживать приложения .NET в macOS.До сих пор я успешно скомпилировал LLDB 3.9 с помощью libsosplugin.dylib и узнал, как открыть приложение в нем.Однако я не смог найти способ перечислить источник и поместить в него точку останова.

$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) 

Можно ли когда-нибудь увидеть источники приложений dotnet в LLDB?

1 Ответ

0 голосов
/ 16 января 2019

Не похоже, что есть какая-либо отладочная информация для этой функции - конечно, ни один lldb не может найти или прочитать.Без этого lldb не сможет построить карту из ПК -> местоположение источника, поэтому никакие операции на основе источника работать не будут.

lldb поддерживает только форматы отладки DWARF и PDB (а PDB являетсяработа в процессе и не присутствовала в lldb-3.9.1, который является довольно старым lldb.)

Я не играл с компиляцией приложений .NET на macOS, поэтому я не знаю, какие варианты он предлагаетдля отладочной информации.Сначала вам нужно это выяснить.

...