2017-06-07 7 views
0

Entwickeln eines Vala (libvala) -Programms mit --pkg libvala-0.36 auf VSCode 1.12.2/Linux Mint 18. Durch Ausführen einer F5-Debugsitzung kann ich Haltepunkte setzen und lokale Variablenwerte anzeigen. Aber ich kann Vala-Objekte nicht dazu bringen, Klassendaten anstatt nur einer Adresse anzuzeigen. Zum Beispiel:VSCode-Debugging mit libvala-0.36 benötigt Debug-Symbole?

foreach (Vala.SourceFile src in context.get_source_files()) { 
        var source = find_source_file (src.filename) ; 

Das Debug-Fenster (und Mausbewegung) zeigt src: Objekt @ # * 0x660aa0 anstelle eines Vala.SourceFile Klassenobjekt. Ich vermute, dass keine libvala Symboltabelle geladen ist? "apt search" zeigt libvala-0.36-0-dbg und libvala-0.36-dev Pakete an, die installiert sind, aber nicht sicher, wie man sie benutzt.

Googeln, fand ich einen Verweis auf "Valac-dbgsym". So versuchte ich ...

Schätzen Sie Ihre Hilfe/Einblick darauf, was ich falsch mache. Mein Ziel ist es, Debug zu starten und Vala anzuzeigen. ??? Klassenobjektdaten im Debug-Fenster. Danke für Ihre Hilfe!

[email protected] ~ $ sudo apt search libvala 
p libvala-0.30-0     - C# like language for the GObject system - 
p libvala-0.30-0:i386    - C# like language for the GObject system - 
p libvala-0.30-0-dbg    - C# like language for the GObject system - 
p libvala-0.30-0-dbg:i386   - C# like language for the GObject system - 
p libvala-0.30-dev    - C# like language for the GObject system - 
p libvala-0.30-dev:i386   - C# like language for the GObject system - 
p libvala-0.34-0     - C# like language for the GObject system - 
p libvala-0.34-0:i386    - C# like language for the GObject system - 
p libvala-0.34-0-dbg    - C# like language for the GObject system - 
p libvala-0.34-0-dbg:i386   - C# like language for the GObject system - 
p libvala-0.34-dev    - C# like language for the GObject system - 
p libvala-0.34-dev:i386   - C# like language for the GObject system - 
i libvala-0.36-0     - C# like language for the GObject system - 
p libvala-0.36-0:i386    - C# like language for the GObject system - 
i libvala-0.36-0-dbg    - C# like language for the GObject system - 
p libvala-0.36-0-dbg:i386   - C# like language for the GObject system - 
i libvala-0.36-dev    - C# like language for the GObject system - 
p libvala-0.36-dev:i386   - C# like language for the GObject system - 
v libvala-dev      -           
v libvala-dev:i386    -           
p libvaladoc-data     - API documentation generator for vala (data 
v libvaladoc-data:i386   -           
p libvaladoc-dev     - API documentation generator for vala (deve 
p libvaladoc-dev:i386    - API documentation generator for vala (deve 
p libvaladoc3      - API documentation generator for vala (libr 
p libvaladoc3:i386    - API documentation generator for vala (libr 

=========================================================================== 
----------building CSharp2Vala.exe 
=========================================================================== 
valac -X -I/media/george/SharedData/Projects/Vala/vala-extra-vapis/ --verbose --vapidir=/media/george/SharedData/P 
rojects/Vala/osslibs/ --girdir=/media/george/SharedData/Projects/Vala/osslibs/ --pkg gio-2.0 --define=DEBUG --save 
-temps -g -X -w \ 
     --pkg libvala-0.36 \ 
     --pkg gee-0.8 \ 
     -X -DGETTEXT_PACKAGE="..." \ 
     -X -I/media/george/SharedData/Projects/Vala/CSharp2Vala/Echo-src/lib \ 
     -X /media/george/SharedData/Projects/Vala/CSharp2Vala/Echo-src/lib/libecho.so \ 
     /media/george/SharedData/Projects/Vala/CSharp2Vala/Echo-src/lib/libecho.vapi \ 
     /media/george/SharedData/Projects/Vala/CSharp2Vala/CSharp2Vala.vala \  -o /media/george/SharedData/Projects/Vala/CSharp2Vala/CSharp2Vala.exe 
Loaded package `/usr/share/vala-0.36/vapi/glib-2.0.vapi' 
Loaded package `/usr/share/vala-0.36/vapi/gobject-2.0.vapi' 
Loaded package `/usr/share/vala-0.36/vapi/gio-2.0.vapi' 
Loaded package `/usr/share/vala-0.36/vapi/libvala-0.36.vapi' 
Loaded package `/usr/share/vala/vapi/gee-0.8.vapi' 

cc -g -o '/media/george/SharedData/Projects/Vala/CSharp2Vala/CSharp2Vala.exe' '/media/george/SharedData/Projects/V 
    ala/CSharp2Vala/CSharp2Vala.c' -pthread -I/usr/include/vala-0.36 -I/usr/include/gee-0.8 -I/usr/include/glib-2.0 -I 
    /usr/lib/x86_64-linux-gnu/glib-2.0/include -lgio-2.0 -lvala-0.36 -lgee-0.8 -lgobject-2.0 -lglib-2.0 '-I/media/geor 
    ge/SharedData/Projects/Vala/vala-extra-vapis/' '-w' '-DGETTEXT_PACKAGE=...' '-I/media/george/SharedData/Projects/V 
    ala/CSharp2Vala/Echo-src/lib' '/media/george/SharedData/Projects/Vala/CSharp2Vala/Echo-src/lib/libecho.so' 
    Compilation succeeded - 3 warning(s) 

Antwort

0

Sie sollten sich bewusst sein, dass libvala eine interne API von Kunden wie valac und vapigen verwendet wird. Diese beiden Clients werden in der Hauptquelle entwickelt und werden daher mit der API libvala synchronisiert. Die API ändert nicht viel, aber zum Beispiel entfernt die kommende 0.38-Version commit c9aa47 die CCode- und Codegen-Symbole aus der API und macht sie nur für libvala privat. Außerdem fügt commit e1b399 einen optionalen Parameter zu Report.set_colors hinzu. Im Laufe der Jahre haben jedoch eine Reihe von IDE-Tools begonnen, libvala direkt zu verwenden. Der pragmatische Rat wäre also, die API libvala zu umgehen, wenn Sie können, und so wenig wie möglich von der API zu verwenden. Verwenden Sie in der Regel den Teil der API, der von vorhandenen Tools verwendet wird.

Wenn Sie selbst libvala entwickeln möchten, können Sie Vala mit dem --enable-coverage erstellen, wenn Sie den Autotools-Build konfigurieren. Dies fügt Zeilennummern für Vala-Quelldateien unter libvala hinzu und zeigt so die Vala-Quell- und Zeilennummer in Backtraces an. Sie möchten auch GLib Debug-Symbole installieren. Ich denke, das ist libglib2.0-0-dbgsym in Ubuntu.

Wenn Sie versuchen, Vala-Programme zu debuggen. Dann wird der --debug Schalter für valac die Quelldatei und Zeilennummer der endgültigen Binärdatei hinzufügen. BTW --debug ist der Standardwert, wenn Meson build with Vala verwendet wird. Das Typsystem in Vala basiert auf GLib, daher werden auch die GLib2-Debugsymbole installiert.

+0

Das Kompilieren von CSharp2Vala.exe mit --pkg libvala-0.36 und der Option --debug hat immer funktioniert. Das Anzeigen von Programmvariablenwerten mit dbg ist kein Problem. Das Debuggen von Werten einer Variablen, die aus einer libvala-Klasse ohne libvala-Symbole eingegeben wurde, ist das Problem. Ich habe versucht, mit --- pkg libvala-0.36-0-dev und --- pkg libvala-0.36-0-dbg zu kompilieren, aber beide Fehler mit fehlenden .vapi-Dateien. Die Passwoche war vergeblich, Dokumente oder Beispiele zu finden, die zeigen, wie man mit diesen Paketen kompiliert. –

Verwandte Themen