繁体   English   中英

在Visual Studio 2008中调试多线程C#-C ++ / CLI-C ++解决方案:这些线程是什么?

[英]Debugging a Multithreaded C# - C++/CLI - C++ Solution in Visual Studio 2008: What are these threads?

我继承了一个包含三个级别的代码的项目。 最底层是与硬件交互的本机C ++。 这是成熟,稳定且经过测试的。 中级代码是C ++ / CLI,它与包含UI元素和一些其他功能的顶级C#代码进行交互。 该C#代码不完整,已被迫着急进行开发:它经常崩溃,不符合特定目的。 我的任务是调试并完成它。

我正在使用VS 2008逐步浏览多线程代码,以了解从何处开始该项目。 一个简单的问题:在“线程”窗口中,我有两个命名线程:一个与某些基础硬件(即C ++代码)通信的Worker线程和一个User Interface线程。

但是,单步执行代码时,有许多工作线程没有名称,也没有与之关联的调用堆栈,它们似乎是随机出现的。 它们在“调试位置”工具栏中没有条目,并且在选中“在源中显示线程”时,它们在代码中似乎不可见。

它们是什么,我应该关注它们吗? 它们似乎不是来自本机代码(因为它使用Boost进行线程化,这在调用堆栈中很明显)。 冻结它们或更改其优先级似乎没有任何效果。

在此之前,我没有调试过这种复杂的多线程代码,因此请多多指教!

除了应用程序的线程外,.NET应用程序中还有一些其他线程。 运行时使用专用线程来运行终结器。 driis指出,您可能还会看到线程池线程。 调试器也将启动线程。 如果您使用的是vshost,那么将有很多额外的线程开销

这些线程可能是.NET ThreadPool线程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM