用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

IT开发者    -  云代码空间

—— 20141227

Visual Studio线程重命名

2014-04-05|2287阅||

摘要:当你调试多线程应用是,Threads窗口会显示创建了哪些线程,以及当前的线程。线程越多,你就越难找到你要找的线程(特别是当同一段程序,被多个线程同时执行的时候,你就不知道当前执行的是哪个线程实例) 调试器允许你给线程重新命名。用右键单击一个线程,并重命名。

当你调试多线程应用是,Threads窗口会显示创建了哪些线程,以及当前的线程。线程越多,你就越难找到你要找的线程(特别是当同一段程序,被多个线程同时执行的时候,你就不知道当前执行的是哪个线程实例)

Visual Studio线程重命名

调试器允许你给线程重新命名。用右键单击一个线程,并重命名。

Visual Studio线程重命名

也可以以程式设计方式命名线程,虽然这有点棘手而且线程启动后必须去做的,否则调试器将以它的默认命名规定重新将其初始化,下面的函数显示了如何定义和使用一个线程。

01 typedef struct tagTHREADNAME_INFO
02 {
03     DWORD dwType;        // 必须是两个字节的长度
04     LPCSTR szName;       // 指针指向命名 (同一个地址空间)
05     DWORD dwThreadID;    // 线程ID(-1调用线程)
06     DWORD dwFlags;       // 保留待用,多数情况下为0
07 } THREADNAME_INFO;
08  
09 void SetThreadName(DWORD dwThreadID, LPCSTR szThreadName)
10 {
11     THREADNAME_INFO info;
12     info.dwType = 0x1000;
13     info.szName = szThreadName;
14     info.dwThreadID = dwThreadID;
15     info.dwFlags = 0;
16  
17     __try
18     {
19         RaiseException(0x406D1388, 0, sizeof(info)/sizeof(DWORD), (DWORD*)&info);
20     }
21     __except (EXCEPTION_CONTINUE_EXECUTION)
22     {
23     }
24 }


顶 1踩 0收藏
文章评论
    发表评论

    个人资料

    • 昵称: IT开发者
    • 等级: 资深程序员
    • 积分: 1060
    • 代码: 87 个
    • 文章: 12 篇
    • 随想: 2 条
    • 访问: 3 次
    • 关注

    最新提问

      站长推荐