我在我的应用程序中启用/ RTC来检测堆栈损坏问题。该应用程序有许多组件(dll),总LOC约为40K。它有很多线程。
最初我在执行18000个周期后遇到了崩溃。但是在启用/ RTC选项之后,我将获得100个单位的内容。崩溃总是发生在名为Reciever Thread的线程中。但它在3或4个地点持续崩溃。发生崩溃时,几乎所有局部变量在某些情况下都会被破坏。但是我无法确定根本原因,因为我看不到崩溃发生点周围的任何问题。
我可以做些什么来缩小堆栈腐败的程度? 代码尝试使用catch语句,是否会阻止识别原因?
请帮帮我
谢谢!
答案 0 :(得分:0)
编辑:您使用的是optimisatons:
如果你编译你的程序 命令行使用任何/ RTC 编译器选项,任何编译指示优化 您的代码中的说明将 默默地失败。这是因为 运行时错误检查无效 发布(优化)构建。
您应该使用/ RTC进行开发 建立; / RTC不应该用于 零售业。 / RTC不能用于 编译器优化(/ O选项 (优化代码))。程序图像 用/ RTC构建将略有 比一个更大,稍慢 使用/ Od构建的图像(最高可达5% 慢于/ Od构建)。
如果没有您发布任何代码,我只能建议使用常规工具。
我在Linux上使用valgrind --tool=helgrind
来做这种事情,但我猜你的问题是你在Windows上。
您可能会发现此问题的答案很有用:Is there a good Valgrind substitute for Windows?
(如果您在遇到问题的地方发布代码或指出您使用哪些方法来保护似乎已损坏的变量(互斥体等等),这可能会有所帮助。)