2016-11-14 8 views
5

EDIT: теперь кажется, что это не ограничивается frame info, но на самом деле, NONE из команд breakpoint command add работает. Они будут работать только тогда, когда набирается вручную при (lldb) командной строкиКоманды lldb breakpoint, не работающие в XCode 8

Я установить некоторые контрольные точки в LLDB с помощью консоли XCode, чтобы исследовать класс и как она используется в коде.

(lldb) breakpoint set --func-regex "DVLayer" 

Точка останова 7: 73 местоположения.

(lldb) breakpoint command add 7 

Введите команду (и) отладчика. Введите «DONE» для завершения.

frame info 

continue 

DONE 

Это работало отлично во всех предыдущих версиях XCode вернуться к XCode 4. Теперь, однако, все это я получаю эти утверждения в консоли, и нет информации кадра. Я пробовал команды точки останова на 5 разных классах, и он не работал ни на одном из них ... всегда этот вывод.

Команда # 2 продолжает движение цели.

Команда # 2 продолжает движение цели.

Команда # 2 продолжает движение цели.

Команда # 2 продолжает движение цели.

Команда # 2 продолжает движение цели.

Команда # 2 продолжает движение цели.

Команда # 2 продолжает движение цели.

Команда # 2 продолжает движение цели.

Команда # 2 продолжает движение цели.

отметить также, что ЭТО ТОЛЬКО НЕ РАБОТАТЬ ВНУТРИ breakpoint command add заявление

Если я просто остановился в точке останова в LLDB в командной (lldb) строки, я могу ввести frame info и она работает, как ожидалось, однако, как указано выше, добавление frame info в качестве команды точки останова полностью завершается с выводом выше.

ответ

0

Следующая обходной путь работал для меня в Xcode 8.0:

(lldb) breakpoint set --func-regex "setTitle" 
Breakpoint 2: 296 locations. 
(lldb) breakpoint command add --script-type python 2 
Enter your Python command(s). Type 'DONE' to end. 
def function (frame, bp_loc, internal_dict): 
    """frame: the lldb.SBFrame for the location at which you stopped 
     bp_loc: an lldb.SBBreakpointLocation for the breakpoint location information 
     internal_dict: an LLDB support object not to be used""" 
    print str(frame) 
    frame.GetThread().GetProcess().Continue() 
    DONE 
(lldb) 
frame #0: 0x00000001879ca4b8 UIKit`-[UIButton _setTitleShadowOffset:] 
frame #0: 0x00000001879ca4b8 UIKit`-[UIButton _setTitleShadowOffset:] 
frame #0: 0x00000001879ca4b8 UIKit`-[UIButton _setTitleShadowOffset:] 
frame #0: 0x000000018781ef68 UIKit`-[UIButton setTitleColor:forState:] 
frame #0: 0x000000018781efb4 UIKit`-[UIButtonContent setTitleColor:] 
frame #0: 0x000000018781ef68 UIKit`-[UIButton setTitleColor:forState:] 
frame #0: 0x000000018781efb4 UIKit`-[UIButtonContent setTitleColor:] 
frame #0: 0x000000018781ef68 UIKit`-[UIButton setTitleColor:forState:] 
frame #0: 0x000000018781efb4 UIKit`-[UIButtonContent setTitleColor:] 
frame #0: 0x000000018781edec UIKit`-[UIButton setTitle:forState:] 
frame #0: 0x000000018781ee6c UIKit`-[UIButtonContent setTitle:] 

EDIT: Дополнительная информация: Я не мог получить внешние скрипты питона идти в Xcode 8.

EDIT: ссылка на команды LLDB питона: https://lldb.llvm.org/python-reference.html

+0

Извините, я не заметил вашего ответа раньше. Просто увидел это прямо сейчас. Я дам этот шанс на этой неделе и дам вам кредит (отметьте как ответ), если это сработает. Спасибо за пример. –

+0

У вас был шанс проверить? – mikep

+0

Hah, извините, майк, я еще не был, но это на моем ToDo.Я буквально открываю эту страницу в хромированном окне 24/7, просто чтобы оставить ее в голове. Просто очень занят этим проектом прямо сейчас, но я, скорее всего, смогу дать ему шанс в этот уик-энд. Спасибо за регистрацию. –