【问题标题】:C++ Builder debugger creates too many threadsC++ Builder 调试器创建了太多线程
【发布时间】:2021-12-24 07:44:14
【问题描述】:

我得到了什么:

  • 用 ANSI C 编写的服务器控制台 32 位应用程序(免费 open-source 多人游戏);
  • 应用程序在“Debug mode”中的 Embarcadero C++ Builder 10.3 中运行;
  • 服务器操作系统:Windows Server 2012 R2 64bit。

有时会出现 CPU 负载问题。这个问题的视频演示:https://youtu.be/eyASiAUG2vI (视频说明:我已暂停 IDE 并按 F7 逐步进行...然后它变为“无法访问进程”,因此我再次暂停并再次按 F7 一次)。

调试器似乎有问题。无论出于何种原因,它都会创建太多线程并阻塞 CPU ... Windows 无法创建线程,因为它在 Windows 内核方法“base threadinitthunk”中。 “线程退出,线程启动,线程退出......”等等,所以调试器创建了很多 Windows 无法处理的线程。应用程序中除了调试器外没有多线程。

我检查了 C++ Builder 项目选项(屏幕截图:123),但找不到线程加载器的选项。我想知道,C++ Builder 是否有限制线程数的设置?或者其他一些解决方法?

谢谢!

【问题讨论】:

  • 那么,没有调试器如何运行呢?
  • @TomBrunberg 我想它运行正常。但任务是始终使用调试器运行应用程序以执行测试。
  • AFAIK,调试器不创建自己的线程,它在应用程序线程的上下文中运行,或者在 IDE 的主线程中运行。
  • @RemyLebeau 谢谢!显然这是代码中的错误。它已经修复了:)

标签: multithreading debugging c++builder ansi-c debug-mode


【解决方案1】:

显然这是代码中的错误。它已经修复了 :) 所以调试器毕竟是无辜的......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多