Ubuntu 19.10 上的 gdb 显示错误的变量值

Ubuntu 19.10 上的 gdb 显示错误的变量值

自从升级到 Ubuntu 19.10 以来,使用默认 gcc(9.2.1)编译的程序时,gdb(8.3)几乎无法使用,-O0 -ggdb -g3因为显示的变量大多数值都是错误的。

该项目曾经使用-gdwarf-2 -g3。根据 gcc 文档-ggdb提供的最佳支持,但并没有什么区别。

请注意,在运行 gdb Fedora 8.3-7.fc30 和 gcc 9.2.1 的 Fedora 30 机器上,一切运行正常。两台机器都是 x86_64。

我真的是唯一一个吗?只是为了展示发生了什么:

Thread 1 "swipl" hit Breakpoint 1, PL_error (
    pred=0x214 <error: Cannot access memory at address 0x214>, arity=32767, 
    msg=0x7ffff7df9468 <PL_unify_int64__LD+52> "\311\303\363\017\036\372UH\211\345H\203\354`H\211}\250H\211u\240dH\213\004%(", id=4160516576)
    at ../src/pl-error.c:94
94  { GET_LD
(gdb) bt
#0  PL_error (pred=0x214 <error: Cannot access memory at address 0x214>, 
    arity=32767, 
    msg=0x7ffff7df9468 <PL_unify_int64__LD+52> "\311\303\363\017\036\372UH\211\345H\203\354`H\211}\250H\211u\240dH\213\004%(", id=4160516576)
    at ../src/pl-error.c:94

如果我们看一下调用点,我们会看到

    return PL_error(NULL, 0, NULL, ERR_PERMISSION_PROC,
            ATOM_redefine, ATOM_imported_procedure, proc);

前三个参数都是 0,但 gdb 声称它们具有一些虚假值。

相关内容