如何在需要超级用户权限的程序上运行Valgrind?

时间:2017-08-08 02:57:20

标签: c valgrind sudo

我正在用C语言编写数据包嗅探器(使用libpcap)并且我不能使用Valgrind来查找程序中的内存泄漏,因为它必须以超级用户权限运行,因为没有这个,我甚至无法打开用于捕获的网络接口。

当我尝试用sudo运行Valgrind时,我得到了这个:

$ valgrind sudo ./[exec]
==5211== 
==5211== Warning: Can't execute setuid/setgid/setcap executable: /usr/bin/sudo
==5211== Possible workaround: remove --trace-children=yes, if in effect
==5211== 
valgrind: /usr/bin/sudo: Permission denied

所以我尝试以超级用户(sudo su)运行并得到了这个:

# valgrind ./[exec]
valgrind: ./bin/TP2: Permission denied

以及:

$ sudo valgrind ./[exec]
valgrind: ./bin/TP2: Permission denied

我搜索了所有的互联网以找到答案。

简而言之,我需要在数据包嗅探器中找到内存泄漏,并且必须使用管理员权限运行。有人可以帮我这么做,或者至少推荐我另一个内存检查器吗?

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。我不知道问题是因为我的可执行文件所在的卷是一个NTFS分区。首先,我将文件移动到Ex4分区上的随机文件夹,因此,我使用chmod更改了可执行文件的权限。

现在我可以在以root身份登录时在我的程序上运行Valgrind。