GDB 调试器:检测到 GDB 的内部问题

爵士乐

我是 GNU 调试器的新手。我一直在玩它,调试程序集文件 ( x86_64 Linux) 一天左右,就在几个小时前,我“发现”了 TUI 界面。

我使用 TUI 界面的第一次尝试是在一个简单的 Hello World 程序(在 asm 中)执行每一行时查看寄存器的变化。这是程序的代码

section .data
        text db "Hello, World!", 10
        len equ $-text
section .text

        global _start

_start:

        nop

        call _printText

        mov rax, 60
        mov rdi, 0
        syscall

_printText:

        nop

        mov rax, 1
        mov rdi, 1
        mov rsi, text
        mov rdx, len
        syscall
        ret

在linux的终端中创建可执行文件后我写

$ gdb -q ./hello -tui

然后我创建了三个断点:一个在 的右边_start,另一个在后面_printText,最后一个mov rax, 60SYS_EXIT.

在这之后:

1)我运行程序。

2)在gdb模式下我写layout asm了看写的代码。

3)我写 layout regs.

4)最后我用stepi写的hello world程序看看寄存器是如何变化的。

问题是,当RIP寄存器指向ret, 对应的地址时SYS_EXITEnter在控制台中收到以下消息

[Inferior 1 (process 2059) exited normally]
/build/gdb-cXfXJ3/gdb-7.11.1/gdb/thread.c:1100: internal-error: finish_thread_st
ate: Assertion `tp' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n)

如果我输入n它会出现这个(正如它所说,如果我输入它会退出y):

This is a bug, please report it.  For instructions, see:
<http://www.gnu.org/software/gdb/bugs/>.

    /build/gdb-cXfXJ3/gdb-7.11.1/gdb/thread.c:1100: internal-error: finish_thread_st
    ate: Assertion `tp' failed.
    A problem internal to GDB has been detected,
    further debugging may prove unreliable.
    Create a core file of GDB? (y or n) 

因为我不知道 GDB 的核心文件是什么(以及有什么用处),所以我输入n并关闭调试会话。

有谁知道为什么会发生这种情况以及如何解决?

顺便说一下,我也是 Assembly 的新手,所以如果这是由于程序中的错误而发生的,我也很感激如果有人能指出这一点。

无限狂躁

我使用与您相同的 GDB 版本,并且始终使用 TUI 功能;但我从来没有遇到过这个问题。但是,当我使用您的代码时,会发生内部 GDB 错误。但是,如果我对您的 write syscall 函数进行了一项更改,则该错误不会出现。

尽管您不是从函数内部调用另一个函数,但我通常通过在我的 x86-64 函数调用中至少包含“push rbp”、“mov rbp、rsp”和“leave”指令来创建堆栈帧。这可能是一个创可贴或解决“错误”的方法。

_printText:
        push rbp
        mov rbp, rsp
        mov rax, 1
        mov rdi, 1
        mov rsi, text
        mov rdx, len
        syscall
        leave
        ret

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章