【发布时间】:2011-03-18 19:26:40
【问题描述】:
我正在构建一个应用程序,它输入一个可执行文件,执行它并跟踪动态内存分配等,以帮助跟踪内存错误。
在读取可执行文件的名称后,我创建了一个子进程,将可执行文件与我的模块(包括我的 malloc 系列函数)链接并执行用户提供的可执行文件。父进程将包含一个 GUI(使用 QT 框架),我想在其中显示警告/错误/分配数。
我需要将 malloc/frees 的数量和一系列警告消息实时传达给父进程。用户应用程序完成执行后,我希望显示内存泄漏的数量。 (我已经在我链接的共享库中处理了所有需要的后端编码)。
实时:
我想到了 2 种不同的方法来传达此信息。
- 子进程将写入 2 个管道(1 个用于写入是否发生分配/释放,另一个用于写入单个整数以表示警告消息)。
- 我只是简单地发送一个信号来表示是否发生了分配。还为每个警告消息创建信号。我会将这些映射到父进程中的实际警告(字符串)。
信号版本是否与使用管道一样有效?可行吗?有没有更好的选择,因为我很关心效率:)
用户的应用程序完成执行后:
我需要在这里发送我用来跟踪内存泄漏的整个数据结构。这可能非常大,所以我不确定哪种 IPC 方法最有效。
感谢您的宝贵时间
【问题讨论】:
-
我敢问,你这样做是为了什么? (只是感兴趣)
-
这是我本科最后一年的项目,我应该把它标记为家庭作业吗?
-
不,我只是好奇,如果你把它标记为家庭作业,你真的只会让人们给你一堵参考墙,而不是你可能真正寻找的代码 sn-p 的帮助。跨度>