【问题标题】:GDB breakpoint doesn't stop [closed]GDB断点不会停止[关闭]
【发布时间】:2016-09-30 22:00:41
【问题描述】:

我的目标是找出str_main 的地址空间,但gdb 跳过了我的断点。

我如何找到它的地址位置?

我有一个简单的 c 程序,stack.c:

....
19 int main(int argc, char **argv[])
20 {
21    char str_main[517];
22    FILE *badfile;
23 
24    badfile = fopen("badfile","r");
....

当我进入 gdb 时,我在第 21 行设置了一个断点。但是,当我运行调试器时,我收到以下消息:

Breakpoint 1, main(argc=1, argv=0xbffff3d4) at stack.c:24
24            badfile = fopen("badfile","r");

【问题讨论】:

  • 第 22 行在编译后的二进制文件中并不是真正的可执行行。但问题是什么?停在第 24 行完全可以满足您的需求。您认为您可以在第 22 行的调试器中看到哪些在第 24 行看不到的内容?也就是说,您没有问题。

标签: c debugging gdb breakpoints


【解决方案1】:

GDB 不会停止在没有默认值的声明上。

即使到了 24 岁,您仍然可以打印地址。

p /s str_main

【讨论】:

    猜你喜欢
    • 2013-07-20
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    • 2013-09-26
    • 2021-12-07
    • 1970-01-01
    • 2012-11-29
    • 2012-03-11
    相关资源
    最近更新 更多