Valgrind无法创建日志文件提示“Permission denied”的问题求助
Valgrind无法创建日志文件提示“Permission denied”的问题求助
各位好,我遇到了一个Valgrind日志权限的问题,想请教大家帮忙解决:
我正在运行一个由多个可执行文件组成的Linux应用,进程结构如下:
base_app以超级用户权限启动,通过fork()创建su_app和non_su_app两个子进程non_su_app需要以普通用户权限运行,因此在fork()之后我调用了setegid()和seteuid()切换到普通用户权限
为了给这些进程做内存分析,并且分别收集每个进程的独立日志,我执行了以下命令:
sudo valgrind --tool=memcheck --trace-children=yes --leak-check=full --show-leak-kinds=all --log-file=/tmp/log_files/valgrind-%p /path/to/base_app
这条命令对base_app和su_app都能正常工作,但当程序尝试启动non_su_app时,会反复抛出权限错误:
valgrind: Cannot create log file '/tmp/log_files/valgrind-15056': Permission denied
最终导致整个应用完全无法启动。
我已经尝试过以下两种方法,但都没有解决问题:
- 将日志目录
/tmp/log_files的权限修改为777 - 调整命令执行顺序,用Valgrind包裹sudo启动应用:
valgrind --tool=memcheck --trace-children=yes --leak-check=full --show-leak-kinds=all --log-file=/tmp/log_files/valgrind-%p sudo /path/to/base_app
想请教一下,有没有什么办法能让我正确收集到所有进程的Valgrind日志呢?
备注:内容来源于stack exchange,提问作者WereWind




