小编Fma*_*mag的帖子

当您执行“中断函数名称”时,GDB 如何确定要中断的地址?

一个简单的例子来说明我的问题:

// test.c
#include <stdio.h>

int foo1(int i) {
    i = i * 2;
    return i;
}

void foo2(int i) {
    printf("greetings from foo! i = %i", i);
}

int main() {
    int i = 7;
    foo1(i);
    foo2(i);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

$ clang -o test -O0 -Wall -g test.c

在 GDB 中,我执行以下操作并开始执行:

(gdb) b foo1  
(gdb) b foo2
Run Code Online (Sandbox Code Playgroud)

到达第一个断点后,我反汇编:

(gdb) disassemble 
Dump of assembler code for function foo1:
   0x0000000000400530 <+0>:     push   %rbp
   0x0000000000400531 <+1>:     mov    %rsp,%rbp
   0x0000000000400534 <+4>:     mov    %edi,-0x4(%rbp) …
Run Code Online (Sandbox Code Playgroud)

c debugging stack gdb

4
推荐指数
2
解决办法
1336
查看次数

标签 统计

c ×1

debugging ×1

gdb ×1

stack ×1