2016-01-14 45 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方法。