当使用 GNU GAS 手动编写程序集时,在函数内,我想设置一个标签,以便:
b mylabel打破标签类似的问题nasm已在以下位置提出:Break at local label using GDB for NASM assembly,但我想在这里更精确地表示我想要 GNU GAS 和 ELF 输出。
例如,如果我定义了一个普通标签,mylabel如下所示:
电源
.text
.global _start
_start:
/* exit */
mov $60, %rax
mylabel:
mov $0, %rdi
syscall
Run Code Online (Sandbox Code Playgroud)
这并不令我满意,因为当 GDB 到达 时mov $0, %rdi,bt显示mylabel为函数名称,而我希望它是函数_start名称。特别是,这可能会破坏回溯,因为 GDB 无法找到堆栈帧:How gdbreconstructing stacktrace for C++?
但是,如果我按照以下解释替换mylabel为.Lmylabel:Local labels in GNU assembler; gdb 打印回溯,就像标签是函数一样, …