如何运行ps来调试linux中的多线程程序?

时间:2012-05-06 15:42:29

标签: c++ linux debugging shell pthreads

我有这段代码:

#include <iostream>
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>

using namespace std;

void* printHello (void* threadId){

    cout << "in print Hello"<< (long) threadId << endl;
    pthread_exit(NULL);
}

#define num 1000000

int main () {

    pthread_t threads [num];
    int rc;
    long t;


    for (t=0 ; t<num; ++t){

        cout <<"in main" << "thread Id = " << t << endl;
        rc = pthread_create(&threads[t] , NULL , printHello , (void*)t);
        if (rc) {
            cout << "ERROR"<< "rc= "<< rc << endl;
            exit(-1);
        }


    }

    pthread_exit(NULL);
}

如何从shell ps -Lf, ps -T, ps -Lm同时运行到上面的代码? 我的意思是如何在shell命令提示符下运行?使用另一个选项卡似乎无法正常工作。

1 个答案:

答案 0 :(得分:3)

要严格回答您的问题,一种方法是使用 tmux ,在同一窗口的不同终端中。根据需要打开,准备命令,设置tmux以在tmux提示符下使用:setw synchronize-panes on 复制输入,然后按Enter键同时运行所有命令。这是它的样子: tmux powah!