LLDB сделать команду из скрипта - PullRequest
0 голосов
/ 25 марта 2020

Я создал step-scripted, который печатает для меня имя функции, которую вызывает отладчик.

Теперь я хочу автоматизировать ту часть, которую мне нужно напечатать: thread step-scripted -C MyTrace.Trace

Как можно Я запускаю приведенную выше команду из скрипта?

, поэтому я сделаю что-то вроде этого:

script
while True:
    thread step-scripted -C MyTrace.Trace

1 Ответ

0 голосов
/ 25 марта 2020

Во-первых, нет никаких причин, по которым план шага должен делать только один шаг. Если вы хотите сделать шаг навсегда, просто сделайте план шага - никогда не устанавливайте план для завершения и возвращайте false из should_stop. Еще удобнее, если вы используете последнюю версию lldb, вы можете передавать аргументы в ваш сценарий шага, используя аргументы -k <key> -v <value>. Таким образом, вы могли бы также сделать так, чтобы ваш план выполнял входные данные «count» и делал это много раз.

В противном случае, самый простой способ сделать это - использовать интерфейс Python для реализации пользовательской команды, которая автоматизирует это шаг. SBThreads - это то, что вы делаете. Если вы используете командную форму, которая принимает SBExecutionContext, описанный здесь:

https://lldb.llvm.org/use/python-reference.html#id6

, вы можете получить поток из SBExecutionContext.thread, затем использовать SBThread. StepUsingScriptedThreadPlan для позвоните в ваш план потока, чтобы сделать шаг. Как только вы окажетесь в python, напишите al oop, чтобы сделать это навсегда или до какого-то состояния, и т.д. c. должно быть легко. Ваша команда также может проходить несколько раз, например, c.

Обратите внимание, вы также можете запускать команды в интерпретаторе сценариев, используя SBCommandInterpreter.HandleCommand, если вам это кажется более легким.

...