[LINUX] Debuggen Sie gemeinsam genutzte Bibliotheken mit VScode

Ich habe versucht, eine gemeinsam genutzte Bibliothek (.so) zu debuggen, die in C ++ mit VScode erstellt wurde. Ich hatte nicht viele Informationen und hatte es schwer, also werde ich es als Artikel schreiben.

Erstellen einer gemeinsam genutzten Bibliothek

Erstellen Sie zunächst eine Bibliothek

g++ -shared -g -fPIC -o libtodebug.so file1.cpp file2.cpp

Beim separaten Kompilieren

g++ -g -fPIC -c -o file1.o file1.cpp
g++ -g -fPIC -c -o file2.o file2.cpp
g++ -shared -o libtodebug.so file1.o file2.o

Erstellen mit. Sie müssen die Option -fPIC einschließen.

Debuggen mit VScode

Beim VScode-Debugging Die Debug-Konfigurationsdatei muss so konfiguriert sein, dass eine ausführbare Datei gestartet wird, die die gemeinsam genutzte Bibliothek verwendet.

launch.json


{
    //Mit IntelliSense können Sie die verfügbaren Attribute kennenlernen.
    //Bewegen Sie den Mauszeiger und zeigen Sie die Beschreibung der vorhandenen Attribute an.
    //Überprüfen Sie das Folgende für weitere Informationen: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python-Debugger",
            "type": "cppdbg",
            "request": "launch",
            "program": "python",
            "args": [
            "${Python-Dateiname zum Debuggen, debug.py}"
            ],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                "description": "Enable pretty-printing for gdb",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
                }
            ]
        }
    ]
}

Geben Sie ein Python-Programm als Programm zum Debuggen mit gdb an. Durch Laden der gemeinsam genutzten Bibliothek ohne Python und Aufrufen der Funktionen in der gemeinsam genutzten Bibliothek von Python aus Es wird in Form von Debugging mit GDB sein.

Natürlich muss es nicht Python sein, Dieses Mal habe ich mich für Python entschieden, weil es einfach ist, eine Funktion zu schreiben, die eine gemeinsam genutzte Bibliothek lädt und ausführt.

Erstellen eines Python-Programms

Schreiben Sie ein Python-Programm, das die gemeinsam genutzte Bibliothek lädt und die Funktion aufruft.

debug.py


import ctypes

def main():
    sharedlib = ctypes.cdll.LoadLibrary("./libtodebug.so")
    func = sharedlib .SampleFunc
    func.argtypes = [ctypes.c_int]
    func.argtypes = [ctypes.c_int]
    res = func(ctypes.c_int(10))
    print(res)

if "__name__" == "__main__":
    main()

Ich fühle mich so. In meinem Fall habe ich mit tkinter eine GUI erstellt und eine Umgebung erstellt, die flexibles Debuggen ermöglicht.

Recommended Posts

Debuggen Sie gemeinsam genutzte Bibliotheken mit VScode
Verwenden Sie gemeinsam genutzten Speicher mit gemeinsam genutzten Bibliotheken
Drucken Sie das Debug mit PyScribe
Fehler beim Laden von gemeinsam genutzten Bibliotheken
Installieren Sie eine externe Bibliothek mit Python
Debuggen Sie Python mit VS-Code
Debuggen mit dem PEPPER Python Interpreter
Schritte zur Entwicklung von Django mit VSCode
Debuggen Sie die E-Mail-Übertragung mit Pythons smtpd.DebuggingServer
Debuggen Sie das Skript mit Sakura Editor
Begrenzen Sie öffentliche Symbole in gemeinsam genutzten Bibliotheken
Ich möchte mit Python debuggen
Intellisense funktioniert nicht mit Tensorflow2.0 + VScode