我正在用 C 语言(使用 libpcap)编写一个数据包嗅探器,我无法使用 Valgrind 来查找程序中的内存泄漏,因为它必须以 super 用户权限运行,因为如果没有这个,我什至无法打开用于捕获的网络接口(interface)。
当我尝试使用 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
所以我尝试以 super 用户身份运行(sudo su
)并得到了这个:
# valgrind ./[exec]
valgrind: ./bin/TP2: Permission denied
以及:
$ sudo valgrind ./[exec]
valgrind: ./bin/TP2: Permission denied
我在整个互联网上搜索了这个问题的答案。
简而言之,我需要在数据包嗅探器中找到内存泄漏,并且它必须以管理员权限运行。有人可以帮我解决这个问题,或者至少推荐我另一个内存检查器吗?
最佳答案
我找到了解决方案。我不知道问题是因为我的可执行文件所在的卷是 NTFS 分区。首先,我将文件移动到 Ex4 分区上的随机文件夹,因此,我使用 chmod
更改了可执行文件的权限。
现在,当我以 root 身份登录时,我可以在我的程序上运行 Valgrind。
关于c - 如何在需要 super 用户权限的程序上运行 Valgrind?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45558573/