2013-07-04 18 views
1

由於this問題,我打算使用dtrace來找出從屬SQL線程在臨時表中執行的操作,並遵循this指南。dtrace:無法編譯腳本探針描述pid29441 :: * Slave_open_temp_tables *:返回與任何探針不匹配?

這裏是我的腳本:

#!/usr/sbin/dtrace -s 

#pragma D option quiet 
dtrace:::BEGIN 
{ 
    printf("Tracing... Hit Ctrl-C to end.\n"); 
} 

pid$target::*mysql_parse*:entry 
{ 
    self->query = copyinstr(arg1); 
} 

pid$target::*Slave_open_temp_tables*:return 
{ 
    @query[self->query] = count(); 
} 

,這是運行時,我得到了什麼:

# ./Slave_open_temp_tables.d -p `pgrep -x mysqld` 
proc-stub:rd_event_enable 
proc-stub:rd_errstr err=26 
dtrace: failed to compile script ./Slave_open_temp_tables.d: line 14: probe description pid29441::*Slave_open_temp_tables*:return does not match any probes 
User defined signal 1 

我也試圖與create_myisam_tmp_table但得到了同樣的結果。

我在哪裏做錯了?

回答

0

我沒有安裝MySQL來尋找你,但選項dtrace會告訴你哪些探針可用,從中你應該能夠弄清楚你做錯了什麼。

$ dtrace -ln 'pid$target::*Slave_open_temp_tables*:return' -p `pgrep -x mysqld` 

,或者嘗試使用了一個不太確切的名稱,如*open_temp_tables**tables*甚至*獲得更廣泛的結果......它可能是功能不再是你的目標過程中存在因變化MySQL的源代碼。

此外,我假設您已檢查pgrep -x mysqld的輸出以確保它是有效的輸入pid?