gpt4 book ai didi

c++ - 如何在 C++ 中获得调试执行流程

转载 作者:太空宇宙 更新时间:2023-11-04 12:25:31 24 4
gpt4 key购买 nike

我在一个支持很多用户的全局交易系统上工作。每个用户都可以预订、修改、编辑、删除交易。该系统由中央交易捕获服务管理。交易捕获服务会通知所有用户发生的任何更新。

当我们发生崩溃时,问题就来了,因为无法在测试系统上重新创建生产环境,我必须依赖崩溃转储和日志文件。

但是这并没有告诉我用户一直在做什么。

我想要一个能够(在崩溃时)转储出用户一直在做什么的历史记录的系统。我添加的任何内容都必须进入实时环境,因此不会对性能产生太大影响。

我的想法很明智,我想在每个函数的顶部都有一个 MACRO,它充当堆栈跟踪(只有我可以提供额外的用户信息,如交易 ID、用户对话框选择等。)系统将记录堆栈跟踪(基于每个线程)并将历史记录保存在循环缓冲区中(大小不同,具体取决于您想要捕获多少历史记录)。然后在崩溃时,我可以转储这个历史堆栈。

我真的很想知道是否有人有更好的解决方案,或者是否有人知道现有的框架?

谢谢丰富

最佳答案

您的解决方案听起来很合理,但也许您可以触发使用 atexit() 处理程序打印它而不是依赖于在调试器中查看您的审计跟踪。像一堆包含 __FILE__,__LINE__,pthread_self() 的字符串这样简单的东西可能就足够了

您可以使用一些现有的撤消框架,因为它类似于审计跟踪,但它会比您想要的更重量级。它可能基于命令模式并希望您实现 execute() 方法,但我想您可以将它们留空。

关于c++ - 如何在 C++ 中获得调试执行流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2715884/

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