c - 如何在需要 super 用户权限的程序上运行 Valgrind?

标签 c valgrind sudo

我正在用 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/

相关文章:

C 编程 - 使用 sudo 权限执行另一个程序

c - 作业 - 二叉搜索树 C

c - MPI_Gatherv 负计数错误

c - 一次调用多个函数的程序不断崩溃。 (C语言编程)

c++ - qt designer 指定的 QDialog 的 valgrind 问题

ssh - 有没有办法用 root 以外的用户执行使用 "remote"的 Shipit "sudo"命令?

Jenkins 须藤 : no tty present and no askpass program specified with NOPASSWD

c - 将数千个数据结构保存在一个文件中并进行特定查找是否实用?

debugging - 使用 gdb 调试时彻底退出 valgrind

C - sigqueue 调用时 Valgrind 报告 "Syscall param points to uninitialised byte"