2016-01-14 71 views
0

我試圖設置以「dc_api」開頭的所有函數的斷點,但我必須排除以「dc_api_port_counter」和「dc_api_send_reply」開頭的函數。GDB中的正則表達式斷點

關於「dc_api_port_counter」排除,請注意,我確實需要包含以「dc_api_port_something」開頭的函數。

我用正則表達式在線測試儀,並與下面的正則表達式上來。 dc_api _(?!port_counter | send_reply)*

然而,使用時,我收到以下錯誤:

(gdb) rbreak dc_api_(?!port_counter|send_reply).*

!port_counter|send_reply).*: event not found

(gdb)

感謝您的幫助。

+0

gdb使用grep風格的正則表達式,所以它不能理解(?!...)的負向預測。不幸的是,在正則表達式中沒有其他方法來否定多字符序列,所以我不知道如何去做你想要的東西...... – jomuel

回答

1

有沒有簡單的,內置的方式來做到這一點。但是,它可以通過幾種方法完成。

首先,使用rbreak來設置「太多」斷點。然後,訣竅是找到一種自動的方式來刪除額外的斷點。

一個簡單的方法是在Python中編寫一段代碼,循環所有的gdb斷點。對於每個斷點,它將檢查location屬性,如果應該排除,請調用斷點的delete方法。