我正在运行一个因中止陷阱而失败的程序(错误代码 12)。为了调试错误,我正在运行 valgrind,但每次我运行它时,valgrind 本身都会崩溃,并显示“Killed”消息而没有其他内容(未显示结束消息堆摘要等)。我在 google 或 SO 上找不到任何关于此的信息,我希望有人能阐明导致此错误的原因以及如何调试它。
任何帮助表示赞赏!
我正在运行一个因中止陷阱而失败的程序(错误代码 12)。为了调试错误,我正在运行 valgrind,但每次我运行它时,valgrind 本身都会崩溃,并显示“Killed”消息而没有其他内容(未显示结束消息堆摘要等)。我在 google 或 SO 上找不到任何关于此的信息,我希望有人能阐明导致此错误的原因以及如何调试它。
任何帮助表示赞赏!
我认为您的进程可能会被内核的内存不足系统杀死 - 当系统内存不足时,会以无法被捕获的方式硬杀死一个进程,这就是为什么 valgrind 没有说什么就退出的原因。
大概您的程序使用了大量内存,并且当在需要额外内存来跟踪内存定义的 valgrind 下运行时,没有足够的可用内存并且(无疑非常大)valgrind 进程被杀死。
如果我是对的,那么您将需要一台具有更多内存或至少具有更多交换空间的机器,以便能够在 valgrind 下运行您的程序。
如果您的机器使用非标准内存分配,例如使用具有在处理器的内存空间中访问的自己的物理内存的协处理器(GPU、FPGA),也会发生这种情况。
在我们的案例中,供应商必须修复他们的框架以使用 valgrind。