Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将内容保存在valgrind'中;使用--trace children和execl()时的日志文件_C_Exec_Valgrind - Fatal编程技术网

将内容保存在valgrind'中;使用--trace children和execl()时的日志文件

将内容保存在valgrind'中;使用--trace children和execl()时的日志文件,c,exec,valgrind,C,Exec,Valgrind,我目前正在清理一个现有的代码库,遇到了一个涉及valgrind的问题,我想修复它,因为它会导致有用的信息丢失。Valgrind被称为: /usr/bin/valgrind --leak-check=full -v --log-file=./log/valgrind/valgrind-%p.log --trace-children=yes ./myapp arg1 arg2 >&! $logfile 该程序是一个具有内置重启功能的服务器,通过execl()实现 当服务器重新启动时,

我目前正在清理一个现有的代码库,遇到了一个涉及valgrind的问题,我想修复它,因为它会导致有用的信息丢失。Valgrind被称为:

/usr/bin/valgrind --leak-check=full -v --log-file=./log/valgrind/valgrind-%p.log --trace-children=yes ./myapp arg1 arg2 >&! $logfile
该程序是一个具有内置重启功能的服务器,通过
execl()
实现

当服务器重新启动时,日志文件中收集到的所有内容(
/log/valgrind/valgrind-1234.log
)都将被清除:日志文件顶部显示重新启动时传递的参数。在此之前的任何东西(使用
tail-f观察到已经存在)都不再存在

一方面,看到它是如何开始执行的新流程映像是有意义的。另一方面,我在前世运行valgrind并不是为了简单地看到它的辛勤工作消失


有人知道一种方法可以让valgrind附加到自己的日志文件中,而不是重新启动它们吗?如果可能的话,我希望避免切换到valgrind的
--log socket
,因为我不想运行另一台服务器:我目前正在清理房间,增加复杂性与我们现在需要的正好相反。:)

您的问题的可能解决方案是允许valgrind将日志记录到指定的文件描述符,这样您就可以将以下内容附加到日志文件中:
valgrind--log fd=9>>test.log./app

您的问题可能的解决方案是让valgrind记录到指定的文件描述符,这样您就可以将以下内容附加到日志文件中:
valgrind--logfd=9>>test.log./app

Hmm。这是我没有考虑过的想法。我可能不得不实施另一种形式的日志轮换(毕竟,在发生冲突的情况下,p间接做到了这一点),但这听起来非常可信。我会试一试,如果成功了,你会注意到的!:)成功!最后我不得不将整个脚本(旧的csh脚本,啊!)重写到bash中,但最终的结果是我现在有了一个组织整齐的文件夹,其中包含不再被覆盖的日志。谢谢嗯,这是一个我没有考虑过的想法。我可能不得不实施另一种形式的日志轮换(毕竟,在发生冲突的情况下,p间接做到了这一点),但这听起来非常可信。我会试一试,如果成功了,你会注意到的!:)成功!最后我不得不将整个脚本(旧的csh脚本,啊!)重写到bash中,但最终的结果是我现在有了一个组织整齐的文件夹,其中包含不再被覆盖的日志。谢谢