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

How do I run Valgrind on a program that needs superuser permission?

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

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

$ 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

我搜索了整个 Internet 以找到答案。

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

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

更改了我的可执行文件的权限

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