Повна траса стека Xcode


79

Поки налагодження все одно є, щоб побачити повну трасування стека, список методів, викликаних в основному потоці. Або будь-яким способом роздрукувати їх у командному вікні.



Програмно ви можете використовувати callStackSymbols, як описує Міхір. Але, звичайно, ви також можете зупинитися в Xcode, на точці зупинки (або просто натиснувши "пауза") і вивчити стек у лівій колонці. (Завжди вмикати точку зупинки винятків.)
Hot Licks

1
(+1 за усвідомлення того, що вивчення стека є важливим. Занадто мало людей, які починають працювати з Xcode, це цінують.)
Hot Licks

Я роблю те саме, але в трасуванні стека я бачу лише 5 або 6 викликів методів, а після цього на 25 його UIApplicationMain і на 26 його основний. Я не бачу методів між 6 і 25. Я хочу бачити повну трасування стека.
NaXir

1
Я отримав це через nslog. дякую хлопці
NaXir

Відповіді:


81

Ви можете роздрукувати трасування стека в NSLog за

NSLog(@"Stack trace : %@",[NSThread callStackSymbols]);

Після аварії біля слова (lldb)ви можете ввести:

po [NSThread callStackSymbols]

Редагувати:

Для кращого виводу на консолі на Swift ви можете замість цього використати такий рядок:

Thread.callStackSymbols.forEach{print($0)}

11
в межах lldb його можна надрукувати за допомогою: po [NSThread callStackSymbols]
Макс Маклауд

Відповідь оновлено
Mihir Mehta

po Thread.callStackSymbols повертаєтьсяcannot use dot operator on a type
pho_pho

141

Використовуйте btкоманду в (lldb).

Після призупинення або після аварії просто введіть btу консолі налагодження.
Він надрукує повну трасу стека.

зразок виводу команди bt


Чудова порада для відстеження проблеми з обмеженнями після встановлення символічної точки зупинку.
Alex Walczak

Ви також можете згадати ідентифікатор потоку (з області налагодження) для захоплення стека цього конкретного потоку. Наприклад, у випадку з
потоком

65

У Xcode 6 ви можете натиснути кнопку в нижньому лівому куті панелі, яка відображає повну трасування стека. Xcode 6 показує повну трасування стека


Ця відповідь все ще актуальна в Xcode 11, але кнопку трохи переміщено. ;)
ReinstateMonica3167040

17

У Xcode 5 ви можете переміщати повзунок внизу панелі, який відображає трасування стека. Він контролює, скільки відображеного сліду відображається.

Повзунок, що керує трасуванням стека


6
Як це зробити в Xcode 6? Повзунка вже немає.
progrmr

3
Здається, цей повзунок було видалено в XCode6 ... якщо хтось знає, як це зробити під XCode6, ти став би моїм героєм.
Steazy

@Steazy Див. Відповідь Гонга Пенджюна на Xcode 6-11 (або, можливо, пізніше, на даний момент актуальна 11.x)
ReinstateMonica3167040

4

Ви можете додати, breakpointперш ніж буде вилучено виняток. Спочатку перейдіть до Breakpoint Navigator(cmd + 6). У нижньому лівому куті миші натисніть кнопку плюс. АБО Ви можете використовувати Instruments(/ Розробник / Програми / Інструменти), щоб допомогти виявити використання zombie objects. Довідково

І коли ви додасте огляд точки зупинку, зображення буде створено до Xcode.

введіть тут опис зображення

Ви можете розширити трасування стека за допомогою повзунка внизу step overта overдля журналів рядків за рядками.

дякую, сподіваюся, це допоможе вам

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.