Nateguyver Breakpoints LLDB Debug Toolchain More

Nateguyver Breakpoints LLDB Debug Toolchain More

��������������������������� ��������������������������� �������� ����������������������������������������������������������������������������������� ���������������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������� ������������������������������� ��������������������������������������������������������������������������������������� ����������������������������������������������������������������������� �������������������������������������������������������������������������������������� �������������������������������������������� ◼ Breakpoints & watchpoints ◼ Xcode's graphical debugger ◼ LLDB �������������� “ ������������������������������������������������������������������������������������ ��������������������������� ”������������������ ���������������������������� ◼ Assertions, Logging, and Debug configuration ◼ Static analysis & runtime memory tools ◼ Unit testing in xcode ���������������� ◼ Emphasis on LLDB as our debugging foundation ◼ Tips and tricks to stramline your the debuggin experience ◼ Use LLDB as an extensible investigative tool “�������������”������������ “��’���������������������������������������������������’���������������������’�������������� ��������’����������������������������������� ”������������������ ��������������������������������������������������� ���������������������������������������������������������������������������������� ���������������������������������������������������������������������������� ◼ The term debugging is widely attributed to U.S. Navy Admiral Grace Hopper, often called Amazing Grace. ������������������������������������������������������������������������������������� ����������������������������������������������������������������������������������� ����������������������������������������������������������������������������������� �������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������� �������������������������������������������������������������������������������������� ������������������������������������������������������������� ����������� “������������������������������������������������������������������������������������������� ����������������”������������������ ◼ Xcode provides two debuggers; the legacy GDB, part of GNU GCC project, and the newer LLDB, part of the LLVM project. �����������������������������������������������������������’�������������������������������� ������������������������������������������������������������������������������������������ �������������������������������������������������������������������������������������������� ����������������������� ������������������������������������� ����������������������������������’���������������������������������������������������������� ���������������������������������������������������������������������������������������������� ��������������������������������������� ��������������������������“�”���������� ������������������������ ����������������������������������������������� ����������������������������������������������� ���������������������������������� �������������������������������������������� ����������������������������������������������� ����������������������������������������������� �������������������������‘��������������’����‘������’��������������� ���������������������������������� ����� ������������������������������������������������������������������������������������������ ������������������������������ ��������������������������������������������������������������� ���������������������� �������������������������������������������������������� ������������������������������ ◼ Note the combined use of a set of nested method calls with a casted print statement, this yields a pretty-formatted rendition of the rect, making it easier to debug. ����������������� ◼ To add or remove a breakpoint: "Command + Backslash" (⌘\) ◼ To stop: “Command + Period” (⌘.) ◼ To pause/continue: “Command + Right” (⌘→) ◼ Continue to current line: “Command + Control + c” (⌘c) ◼ Risky bidness: try dragging instruction pointer! ◼ Set your own hotkeys... here are some more I find useful: + ����� ������������������������ +++� �����������/������� + �������������������� ++� ���������������� +� ���������������� +� ������������� ++] ������������ ++� ������������������� +� �������� +� ����������������� ++� ������������ ++� ���������������� +→← �������������������������� + ���������������������������������� +� ����������� +� ������������ +�/�/�/�/� �������������������� +� ������������� + ���� ��������������������������� ����������������������� ����������������������������������������������������������������������������������� �������������’�������������������������������������������������������������������������� ����������������������������� ������������������������ ������� ���������������������������������������������������������������������������������������� “�������”��������������������������� ◼ There are built-in lldb formatters for system libraries, STL, core-foundation ◼ There system is plug and play-able (more on this later...) ������������������������������������������������������������������������������������� ������������������������������������������������� ��������������� ��������������������������������������������������������������������������������������������� “������������”� �������������� ���������������������� ������������������������������������������������������������ ◼ Note “Step Over” maintains a stack, so when you step over a function with a breakpoint inside it, you can click continue to jump out. ����������������������� ����������������“���������������”����������������������������������������������� ������������������������������������������������������������������������������������� �������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������� ����������������������������������������������������� ����������������������������������������������������������������������������������������� ������������������������������������������������������������������������������� Gotcha: On using stringWithFormat ���������������������������������‘�������������������������������������’�������������� ��������������������������������������������������������������� ���������������������������������������������������������������� �����’�������������������������������������������������������������������������������� ������������������������������������������ ������������������������������������������������������������ ���������������������������������� ������������������������������������������������������������������’���������������������� ����������������� ��������������������������������������������������������������������������������� ������������������� �������������������������������������������������������������������� �������→������������������ Conditional Log ������“���”�������������������������������� ������������������������������������������� Set Breakpoints in Runtime ������“���”�������������������������������� ������������������������������������������������������ ��������������������� ������������������������������������������������������������������������������������ �����������������������������’��������������������������������������������������������������� ������������������������������������������������������������������������������������������ ����������������������������������������������������������������������������� ����������������������������������������������������������������������������������������� �������������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������� ���������������������������������������’��������������������������������������������� ������������������������ ◼ used to break each time a new exception is raised. Common use, to catch uncaught exception: ** * ����������� ��� ��� �� �������� ���������’ ����������������’� ������ �’-[ __��������� ������������� �] � �����(��) ������ ������(�) ��������������������� ���������������������������������������’������������������������������������������ ������������������������������������������������������������������������������� ��������������� ◼ Symbolic breakpoints are useful when you want to stop in a piece of code that you don’t have source code for. Type 1: (class or instance) Methods with arguments ◼ Used to break on every call to a defined method: ���������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������ ������ �������������������������������������������������������������������������������� ������������� �������������“��������������������”������������������������������������� �������������������������������������������������������������������������������������� ������������������������������������“�������������������������������������”������������ ������������������������������������������������������������������������������������������� -[���������������� �����������] -[__��������� ������������� �] ���������������������������������������������������������������������������������������� ��������������������������������������������������������

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    1 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us