图解观察托管程序线程

来源:互联网 发布:华师网络自助缴费网址 编辑:程序博客网 时间:2024/05/09 04:15

首先写如下一个控制台小程序;

namespace demo1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello,World!");
            Console.ReadLine();
        }
    }
}


然后用任务管理器查看其线程数;


任务管理器处在别的选项卡时 查看 菜单下面是没有 选择列 菜单的;



切换到 进程 选项卡,才有 选择列 菜单;



点击 选择列 菜单;在弹出的对话框中选中 线程数;确定;



然后可以看demo1的线程数;张银奎老师著《软件调试》言此时线程数是3,我的为什么是4呢;




谁知道过了一阵,demo1的线程数目又自己变成了7;事实总是让人崩溃的;这是咋回儿事呢;



VS默认是托管调试;如果选中项目属性的 启用非托管代码调试 ;则可进行混合调试;



还是使用托管调试;从VS启动demo1,程序停在Console.ReadLine()时,准备用windbg附加到进程;然后观察线程;

启动windbg,进程列表只有demo1.vshost.exe;没有demo1.exe;



选中 demo1.vshost.exe ,附加;谁知弹出如下对话框;这活老复杂了,下次再搞;



下面用ProcessExplorer来观察线程;

从vs启动调试demo1.exe,进程列表只有demo1.vshost.exe;



看一下他的线程情况;



再单独启动demo1.exe看一下情况;


clr.dll是 .net 的运行环境;


托管程序有三个线程:

与内存回收密切相关的终结器线程;支持调试的辅助调试线程;然后就是程序自己的初始线程;



0 0
原创粉丝点击