Я использую интерфейс GDB Python для обработки точек останова
import gdb
class MyBP(gdb.Breakpoint):
def stop(self):
print("stop called "+str(self.hit_count))
return True
bp = MyBP("test.c:22")
Это работает как ожидалось. Hit_count увеличивается после возвращения метода "stop".
Теперь, когда я хочу использовать условную точку останова:
bp.condition="some_value==2"
это не работает, как ожидалось. Метод stop всегда выполняется независимо от того, является ли условие истинным или ложным. Если метод stop возвращает «True», точка останова остановит программу, только если условие также истинно. Число hit_count увеличивается после возврата метода Stop и выполнения условия.
Таким образом, создается впечатление, что GDB применяет проверку условия только после вызова метода Stop.
Как я могу гарантировать, что метод Stop вызывается только при выполнении условия?