とりあえずここまでできた (ちょっと飽きてきた) メモ。
THD->thread_id は書いたら書きっぱなしだし、 pthread_self() が一緒に呼ばれるタイミングがうまく見つかれば行けそうだけど、 mysqld_list_processes() でもダメなんだよね。
#!/usr/sbin/dtrace -s pid$target:*:*mysql_execute_command*:entry { printf("pid=%d, tid=%d, arg0=%d, arg1=%d", pid, tid, arg0, arg1); }
これで arg1 に入るぽい。
% sudo dtrace -s ./hoge.d -p `pgrep -nx mysqld` | uniq dtrace: script './hoge.d' matched 1 probes CPU ID FUNCTION:NAME 8 56978 __1cVmysql_execute_command6FpnDTHD__i_:entry pid=1006, tid=17620, arg0=11920071504, arg1=2424494 8 56978 __1cVmysql_execute_command6FpnDTHD__i_:entry pid=1006, tid=17620, arg0=11920071504, arg1=2424494 9 56978 __1cVmysql_execute_command6FpnDTHD__i_:entry pid=1006, tid=17620, arg0=11920071504, arg1=2424494 10 56978 __1cVmysql_execute_command6FpnDTHD__i_:entry pid=1006, tid=17620, arg0=11920071504, arg1=2424494
長いこと動きっぱのスレッドならやってる作業のめどを付けて truss から探す、サクサクやることが変わるものならこのリストにいつか出てくる、てな感じでしょうか。