Wdrażanie, uruchamianie i debugowanie projektu narzędzia w systemie Linux
Obsługa systemu Linux jest dostępna w programie Visual Studio 2017 lub nowszym. Aby zapoznać się z dokumentacją dla tych wersji, ustaw listę rozwijaną Wersja znajdującą się powyżej spisu treści na Visual Studio 2017 lub Visual Studio 2019.
Po utworzeniu projektu języka C++ opartego na programie MSBuild w programie Visual Studio i nawiązaniu połączenia z projektem przy użyciu Menedżer połączeń systemu Linux możesz uruchomić i debugować projekt. Kompilujesz, wykonujesz i debugujesz kod w zdalnym obiekcie docelowym.
Program Visual Studio 2019 w wersji 16.1 lub nowszej: możesz kierować różne systemy Linux do debugowania i kompilowania. Na przykład można kompilować krzyżowo na platformie x64 i wdrażać na urządzeniu ARM podczas określania wartości docelowych scenariuszy IoT. Aby uzyskać więcej informacji, zobacz Określanie różnych maszyn do kompilowania i debugowania w dalszej części tego artykułu.
Istnieje kilka sposobów interakcji i debugowania projektu systemu Linux.
Debugowanie przy użyciu tradycyjnych funkcji programu Visual Studio, takich jak punkty przerwania, okna watch i umieszczanie wskaźnika myszy na zmiennej. Korzystając z tych metod, można debugować tak, jak zwykle w przypadku innych typów projektów.
Wyświetl dane wyjściowe z komputera docelowego w oknie Konsola systemu Linux. Można również użyć konsoli do wysyłania danych wejściowych na komputer docelowy.
Debugowanie projektu systemu Linux
Wybierz tryb debugowania na stronie właściwości Debugowanie .
GDB służy do debugowania aplikacji działających w systemie Linux. Podczas debugowania w systemie zdalnym (nie WSL) GDB można uruchomić w dwóch różnych trybach, które można wybrać z opcji Tryb debugowania na stronie właściwości Debugowanie projektu:
GDB służy do debugowania aplikacji działających w systemie Linux. GDB może działać w dwóch różnych trybach, które można wybrać z opcji Tryb debugowania na stronie właściwości Debugowanie projektu:
W trybie gdbserver baza danych GDB jest uruchamiana lokalnie, co łączy się z serwerem gdbserver w systemie zdalnym.
W trybie gdb debuger programu Visual Studio dysków GDB w systemie zdalnym. Jest to lepsza opcja, jeśli lokalna wersja usługi GDB nie jest zgodna z wersją zainstalowaną na komputerze docelowym. Jest to jedyny tryb obsługiwany przez okno Konsola systemu Linux.
Uwaga
Jeśli nie możesz trafić do punktów przerwania w trybie debugowania gdbserver, spróbuj użyć trybu gdb. Najpierw należy zainstalować bazę danych gdb na zdalnym obiekcie docelowym.
Wybierz obiekt docelowy zdalny przy użyciu standardowego paska narzędzi debugowania w programie Visual Studio.
Gdy zdalny obiekt docelowy jest dostępny, zobaczysz ją na liście według nazwy lub adresu IP.
Jeśli jeszcze nie nawiązaliśmy połączenia ze zdalnym obiektem docelowym, zobaczysz instrukcję użycia systemu Linux Menedżer połączeń w celu nawiązania połączenia ze zdalnym obiektem docelowym.
Ustaw punkt przerwania, klikając lewą rynnę kodu, który zostanie wykonany.
Czerwona kropka pojawia się w wierszu kodu, w którym ustawiono punkt przerwania.
Naciśnij klawisz F5 (lub Debuguj rozpocznij debugowanie>), aby rozpocząć debugowanie.
Po rozpoczęciu debugowania aplikacja jest kompilowana na zdalnym obiekcie docelowym przed jego uruchomieniem. Wszelkie błędy kompilacji zostaną wyświetlone w oknie Lista błędów .
Jeśli nie ma żadnych błędów, aplikacja zostanie uruchomiona, a debuger wstrzyma się w punkcie przerwania.
Teraz możesz wchodzić w interakcję z aplikacją w bieżącym stanie, wyświetlać zmienne i przechodzić przez kod, naciskając klawisze poleceń, takie jak F10 lub F11.
Jeśli chcesz używać konsoli systemu Linux do interakcji z aplikacją, wybierz pozycję Debuguj > konsolę systemu Linux.
Ta konsola będzie wyświetlać wszystkie dane wyjściowe konsoli z komputera docelowego i pobierać dane wejściowe i wysyłać je do komputera docelowego.
Konfigurowanie innych opcji debugowania (projekty MSBuild)
Argumenty wiersza polecenia można przekazać do pliku wykonywalnego przy użyciu elementu Argumenty programu na stronie właściwości Debugowanie projektu.
Zmienną
DISPLAY
środowiskową można wyeksportować przy użyciu polecenia przed uruchomieniem na stronach właściwości Debugowanie projektu. Na przykład:export DISPLAY=:0.0
Określone opcje debugera można przekazać do bazy danych GDB przy użyciu wpisu Dodatkowe polecenia debugera . Na przykład możesz zignorować sygnały SIGILL (nielegalne instrukcje). Aby to osiągnąć, możesz użyć polecenia handle , dodając następujący kod do wpisu Dodatkowe polecenia debugera , jak pokazano powyżej:
handle SIGILL nostop noprint
Ścieżkę do bazy danych GDB używanej przez program Visual Studio można określić przy użyciu elementu ścieżka GDB na stronie właściwości Debugowanie projektu. Ta właściwość jest dostępna w programie Visual Studio 2019 w wersji 16.9 lub nowszej.
Debugowanie za pomocą dołączania do procesu
Strona właściwości Debugowanie dla projektów programu Visual Studio oraz ustawienia Launch.vs.json dla projektów CMake mają ustawienia umożliwiające dołączanie do uruchomionego procesu. Jeśli potrzebujesz większej kontroli poza tym, co jest podane w tych ustawieniach, możesz umieścić plik o nazwie Microsoft.MIEngine.Options.xml
w katalogu głównym rozwiązania lub obszaru roboczego. Oto prosty przykład:
<?xml version="1.0" encoding="utf-8"?>
<SupplementalLaunchOptions>
<AttachOptions>
<AttachOptionsForConnection AdditionalSOLibSearchPath="/home/user/solibs">
<ServerOptions MIDebuggerPath="C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\Common7\IDE\VC\Linux\bin\gdb\7.9\x86_64-linux-gnu-gdb.exe"
ExePath="C:\temp\ConsoleApplication17\ConsoleApplication17\bin\x64\Debug\ConsoleApplication17.out"/>
<SetupCommands>
<Command IgnoreFailures="true">-enable-pretty-printing</Command>
</SetupCommands>
</AttachOptionsForConnection>
</AttachOptions>
</SupplementalLaunchOptions>
Element AttachOptionsForConnection ma większość potrzebnych atrybutów. W powyższym przykładzie pokazano, jak określić lokalizację wyszukiwania większej liczby bibliotek. Podrzędny element ServerOptions umożliwia dołączanie do procesu zdalnego za pomocą serwera gdbserver. W tym celu należy określić lokalnego klienta bazy danych gdb (pokazano go w programie Visual Studio 2017) oraz lokalną kopię pliku binarnego z symbolami. Element SetupCommands umożliwia przekazywanie poleceń bezpośrednio do bazy danych gdb. Wszystkie opcje dostępne w schemacie LaunchOptions.xsd można znaleźć w witrynie GitHub.
Określanie różnych maszyn do kompilowania i debugowania w projektach systemu Linux opartych na programie MSBuild
Możesz oddzielić maszynę kompilacji zdalnej od maszyny zdalnego debugowania zarówno dla projektów systemu Linux opartych na programie MSBuild, jak i projektów CMake przeznaczonych dla zdalnej maszyny z systemem Linux. Na przykład można teraz kompilować krzyżowo na platformie x64 i wdrażać na urządzeniu ARM podczas określania wartości docelowych scenariuszy IoT.
Domyślnie maszyna zdalnego debugowania jest taka sama jak maszyna kompilacji zdalnej (Właściwości> konfiguracjiOgólne zdalne>kompilowanie maszyny). Aby określić nową zdalną maszynę debugowania, kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań i przejdź do pozycji Właściwości> konfiguracjiDebugowaniezdalnej maszyny debugowania>.
Menu rozwijane maszyny debugowania zdalnego jest wypełniane wszystkimi nawiązanymi połączeniami zdalnymi. Aby dodać nowe połączenie zdalne, przejdź do pozycji Narzędzia>Opcje>międzyplatformowe>Menedżer połączeń lub wyszukaj ciąg "Menedżer połączeń" w obszarze Szybkie uruchamianie. Można również określić nowy katalog wdrożenia zdalnego na stronach właściwości projektu (Właściwości> konfiguracjiOgólne>zdalne wdrażanie katalogu).
Domyślnie tylko pliki niezbędne do debugowania procesu zostaną wdrożone na maszynie debugowania zdalnego. Za pomocą Eksplorator rozwiązań można skonfigurować pliki źródłowe, które zostaną wdrożone na maszynie debugowania zdalnego. Po kliknięciu pliku źródłowego zobaczysz podgląd właściwości pliku bezpośrednio poniżej Eksplorator rozwiązań.
Właściwość Content określa, czy plik zostanie wdrożony na maszynie debugowania zdalnego. Wdrożenie można całkowicie wyłączyć, przechodząc do strony> właściwości Configuration Manager i usuwając zaznaczenie pola wyboru Wdróż dla żądanej konfiguracji.
W niektórych przypadkach może być wymagana większa kontrola nad wdrożeniem projektu. Na przykład niektóre pliki, które chcesz wdrożyć, mogą znajdować się poza rozwiązaniem lub chcesz dostosować katalog wdrożenia zdalnego na plik lub katalog. W takich przypadkach dołącz następujące bloki kodu do pliku vcxproj i zastąp ciąg "example.cpp" rzeczywistymi nazwami plików:
<ItemGroup>
<RemoteDeploy Include="__example.cpp">
<!-- This is the source Linux machine, can be empty if DeploymentType is LocalRemote -->
<SourceMachine>$(RemoteTarget)</SourceMachine>
<TargetMachine>$(RemoteDebuggingTarget)</TargetMachine>
<SourcePath>~/example.cpp</SourcePath>
<TargetPath>~/example.cpp</TargetPath>
<!-- DeploymentType can be LocalRemote, in which case SourceMachine will be empty and SourcePath is a local file on Windows -->
<DeploymentType>RemoteRemote</DeploymentType>
<!-- Indicates whether the deployment contains executables -->
<Executable>true</Executable>
</RemoteDeploy>
</ItemGroup>
Projekty platformy CMake
W przypadku projektów CMake przeznaczonych dla zdalnej maszyny z systemem Linux można określić nową zdalną maszynę debugowania w pliku launch.vs.json. Domyślnie wartość "remoteMachineName" jest synchronizowana z właściwością "remoteMachineName" w pliku CMakeSettings.json, która odpowiada maszynie kompilacji zdalnej. Te właściwości nie muszą już być zgodne, a wartość "remoteMachineName" w pliku launch.vs.json będzie określać, która maszyna zdalna jest używana do wdrażania i debugowania.
Funkcja IntelliSense zaproponuje całą listę wszystkich ustanowionych połączeń zdalnych. Możesz dodać nowe połączenie zdalne, przechodząc do pozycji Narzędzia>Opcje>międzyplatformowe>Menedżer połączeń lub wyszukując frazę "Menedżer połączeń" w obszarze Szybkie uruchamianie.
Jeśli chcesz mieć pełną kontrolę nad wdrożeniem, możesz dołączyć następujące bloki kodu do pliku launch.vs.json. Pamiętaj, aby zastąpić wartości symboli zastępczych rzeczywistymi wartościami:
"disableDeploy": false,
"deployDirectory": "~\foo",
"deploy" : [
{
"sourceMachine": "127.0.0.1 (username=example1, port=22, authentication=Password)",
"targetMachine": "192.0.0.1 (username=example2, port=22, authentication=Password)",
"sourcePath": "~/example.cpp",
"targetPath": "~/example.cpp",
"executable": "false"
}
]
Następne kroki
- Aby debugować urządzenia ARM w systemie Linux, zobacz ten wpis w blogu: Debugowanie osadzonego urządzenia ARM w programie Visual Studio.
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla