2017-01-26 3 views
0

C言語用のpthreadを使用すると、特定のスレッドのプログラムカウンタ/命令ポインタにアクセスする方法はありますか?Pthreadプログラムカウンタ

例:

void *thread_main(void *arg) { 
    long thread = (long)arg; 

    lock (thread); 
    ***print (thread.pc);*** 
    critical_section (thread); 
    ***print (thread.pc);*** 
    unlock (thread); 

    return NULL; 
} 
+0

クロスプラットフォームのソリューションを探しているのですか、特定のプラットフォーム(Windowsなど)で動作するようにする必要がありますか。 –

+2

Cには「プログラムカウンタ」という概念がありません。 '__FILE__'、' __func__'、 '__LINE__'マクロを使って、コードのどの部分が現在実行中であるかを特定することができます。 – EOF

+0

@i_am_jorf 私はMacOSとDebianマシンを持っています。だからどちらか受け入れられるだろう:) – BabblingMonkey

答えて

0

backtrace()をチェックしてください。両方のプラットフォームでサポートされています。

#include <execinfo.h> 
    .... 
     void * pc; 
     backtrace(&pc, 1); 
    .... 

詳細については、man 3 backtraceを参照してください。同じを実行しているすべてのスレッドthread_mainは同じpcを報告することに注意してください。

+0

ありがとう、これは動作するようです:) – BabblingMonkey