debugging GDB中的正则表达式断点

kdfy810k  于 2023-05-18  发布在  其他
关注(0)|答案(2)|浏览(150)

我尝试在所有以“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)
h7wcgrx3

h7wcgrx31#

没有简单的内置方法来做到这一点。然而,它可以通过几种方式来完成。
首先,使用rbreak设置“太多”断点。然后,诀窍是找到一种自动删除额外断点的方法。
一种简单的方法是用Python编写一段代码,在所有gdb断点上循环。对于每个断点,它将检查location属性,如果应该排除该属性,则调用断点的delete方法。

afdcj2ne

afdcj2ne2#

GDB有一些方便的函数https://sourceware.org/gdb/onlinedocs/gdb/Convenience-Funs.html,$_regex(str,regex)函数可以正确处理正则表达式。但是,这可能是为了在条件中断中用作条件。

相关问题