You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Valgrind无法创建日志文件提示“Permission denied”的问题求助

Valgrind无法创建日志文件提示“Permission denied”的问题求助

各位好,我遇到了一个Valgrind日志权限的问题,想请教大家帮忙解决:

我正在运行一个由多个可执行文件组成的Linux应用,进程结构如下:

  • base_app 以超级用户权限启动,通过fork()创建su_appnon_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_appsu_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

火山引擎 最新活动