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

时间:2016-03-07 16:38:48

标签: linux linux-kernel kernel sbrk brk

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

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

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

谢谢。

2 个答案:

答案 0 :(得分:0)

看起来你正试图做错事。

没有'sbrk'系统调用,有'brk'。除此之外它将被命名为sys_brk,但你没有理由调用它。因此,如果您想了解如何学习当前的休息地址,请阅读brk的消息来源。

但是,如果你没有碰巧找到brk的消息来源,你究竟在哪里放了这个?

答案 1 :(得分:0)

添加以下代码行:

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

它将以终止的十六进制地址向终端返回一条消息(例如0x #### #### ####。)

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

要查看文档,请在命令行中输入:man sbrk,然后会弹出文档。