gpt4 book ai didi

c++ - C/C++程序中的损坏堆栈问题

转载 作者:IT王子 更新时间:2023-10-29 00:36:53 25 4
gpt4 key购买 nike

我在 Linux 服务器上运行 C/C++ 程序来提供视频服务。该程序(称为插件)的核心功能是转换视频,我们为每个视频请求创建一个单独的插件进程。但是我有一个奇怪的问题,有时服务器平均负载会意外地高。我在这个阶段从 top 命令看到的是,有一些进程运行了很长时间并且占用了一些巨大的 CPU。

当我使用 gdb 和回溯堆栈调试这个正在运行的程序时,我发现的是损坏的堆栈:“此帧内部的前一帧(损坏的堆栈?)”。我在网上搜索了一下,发现如果程序出现段错误,就会发生这种情况。

但据我所知,如果程序遇到段错误,程序应该会在此时崩溃并退出。但令人惊讶的是程序在段错误后仍在运行。

这可能是什么原因造成的?我知道程序中肯定有一些大问题,但我只是不明白从哪里开始解决问题......如果你们中的任何人能给我一些灯就太好了......

提前致谢

最佳答案

附加调试器会更改进程的行为,因此您很可能无法获得可靠的调查结果。来自调试器的损坏堆栈消息可能意味着特定调试器不理解二进制文件中的文本信息。

我会建议在有问题的情况下多次运行 pstack(这被称为“蒙特卡洛性能分析”)并附加 stracetruss 到有问题的地方,检查进程在消耗 CPU 时正在执行哪些系统调用。

关于c++ - C/C++程序中的损坏堆栈问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5668000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com