我尝试在所有以“dc_API”开头的函数上设置断点,但必须排除以“dc_api_port_counter”和“dc_api_send_reply”开头的函数。
关于“dc_API_port_counter”排除,请注意,我确实希望包含以“dc_api_port_something”开头的函数。
我使用了regex online tester,得到了下面的regex:dc_API_(?!端口计数器|send_reply).*
但是,在使用它时,我得到以下错误:
>(gdb) rbreak dc_api_(?!port_counter|send_reply).*
>!port_counter|send_reply).*: event not found
>(gdb)
2条答案
按热度按时间h7wcgrx31#
没有简单的内置方法来做到这一点。然而,它可以通过几种方式来完成。
首先,使用
rbreak
设置“太多”断点。然后,诀窍是找到一种自动删除额外断点的方法。一种简单的方法是用Python编写一段代码,在所有gdb断点上循环。对于每个断点,它将检查
location
属性,如果应该排除该属性,则调用断点的delete
方法。afdcj2ne2#
GDB有一些方便的函数https://sourceware.org/gdb/onlinedocs/gdb/Convenience-Funs.html,$_regex(str,regex)函数可以正确处理正则表达式。但是,这可能是为了在条件中断中用作条件。