【问题标题】:VSCode debugging with libvala-0.36 needs debug symbols?使用 libval​​a-0.36 进行 VSCode 调试需要调试符号吗?
【发布时间】:2017-06-07 19:03:04
【问题描述】:

在 VSCode 1.12.2/Linux Mint 18 上使用 --pkg libval​​a-0.36 开发 Vala (libval​​a) 程序。运行 F5 调试会话,我可以设置断点并查看局部变量值。但我似乎无法让 Vala 对象显示类数据而不仅仅是一个地址。例如:

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

调试窗口(和鼠标悬停)显示 src:Object@#*0x660aa0 而不是 Vala.SourceFile 类对象。我猜没有加载 libval​​a 符号表? “apt search”显示已安装的 libval​​a-0.36-0-dbg 和 libval​​a-0.36-dev 软件包,但不知道如何使用它们。

谷歌搜索,我找到了对“valac-dbgsym”的引用。所以我尝试了......

sudo apt-get install valac-dbgsym
E: Unable to locate package valac-dbgsym

感谢您对我做错了什么的帮助/见解。我的目标是运行调试并显示 Vala。???调试窗口中的类对象数据。 感谢您的帮助!

george@george-KT369AA-ABA-a6512p ~ $ 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)

【问题讨论】:

    标签: vala


    【解决方案1】:

    您应该知道libvalavalacvapigen 等客户端使用的内部API。这两个客户端都是在主源中开发的,因此与libvala API 保持同步。 API 没有太大变化,但是例如,随着即将发布的 0.38 版本,commit c9aa47 从 API 中删除了 CCode 和 Codegen 符号,使它们仅对 libvala 私有。此外commit e1b399 将向Report.set_colors 添加一个可选参数。然而,多年来,许多 IDE 工具已经开始直接使用libvala。因此,务实的建议是尽可能避免使用libvala API,并尽可能少使用 API。通常使用现有工具使用的 API 部分。

    如果您希望自己开发 libvala,那么您可以在配置 Autotools 构建时使用 --enable-coverage 构建 Vala。这将在libvala 中添加 Vala 源文件的行号,因此在回溯中显示 Vala 源和行号。您还需要安装GLib 调试符号。我认为这是 Ubuntu 中的 libglib2.0-0-dbgsym

    如果您正在寻找调试 Vala 程序。然后--debugvalac 开关会将源文件和行号添加到最终的二进制文件中。顺便说一句,--debug 是使用 Meson build with Vala 时的默认值。 Vala 中的类型系统基于 GLib,因此也需要安装 GLib2 调试符号。

    【讨论】:

    • 使用 --pkg libval​​a-0.36 和 --debug 选项编译 CSharp2Vala.exe 一直有效。用 dbg 显示程序变量值不是问题。调试从没有 libval​​a 符号的 libval​​a 类键入的变量的值是问题所在。我尝试使用 ---pkg libval​​a-0.36-0-dev 和 ---pkg libval​​a-0.36-0-dbg 进行编译,但都因缺少 .vapi 文件而出错。在过去的一周里,试图找到说明如何使用这些包进行编译的文档或示例是徒劳的。
    猜你喜欢
    • 1970-01-01
    • 2019-05-13
    • 2021-05-11
    • 2023-03-19
    • 2021-06-07
    • 2017-07-31
    • 2020-03-23
    • 2020-09-14
    • 1970-01-01
    相关资源
    最近更新 更多