如何查找程序中断的当前位置



我尝试在brk系统调用函数中添加它:

void *addr = sbrk(0);
printk("current-add-is-%p-n", addr);

但它在内核编译期间返回了隐式声明 sbrk 函数的错误。而且我找不到定义 sbrk 的位置!!我只需要测量,每当某个用户进程尝试扩展其程序中断地址时,我都会知道其当前的程序中断地址,以便我可以测量请求的内存进程量。

谢谢。

看起来你试图做错什么。

没有"sbrk"系统调用,有"brk"。除此之外,它将被命名为sys_brk,但你没有理由称呼它。因此,如果您想了解如何了解当前的中断地址,请阅读 brk 的来源。

但是,如果您没有碰巧找到 brk 的来源,您究竟把它放在哪里?

添加以下代码行:

printf("Address of program break is %pn", (void *)sbrk(0));

它将向终端返回一条消息,其中包含程序中断的十六进制地址。(例如,0x###

# ## ####。

如果希望地址不是十六进制,请使用 %u 或类似地址。手册页(Linux 程序员手册)中记录了sbrk(0)的使用。

要查看文档,请在命令行中键入: man sbrk,文档将弹出。

相关内容

  • 没有找到相关文章

最新更新