`

Xcode 调试与快捷键

    博客分类:
  • ios
 
阅读更多

1.主题及字体

“command+,” 呼叫出偏好设置(首选项),选择“Fonts & Colors”,选中一种主题(theme),例如“Midnight”,然后shift选择Source Editor/Console中的所有项,点击Fonts设置字体。Xcode默认字体为menlo,可选其他等宽字体Consolas/Monaco。

2.View and Navigate

View Navigator

 

command+0:Show/Hide left tool panel

command+1-8:Project/Symbol/Find/Issue/Test/Debug/Breakpoint/Log Navigator

 

option+command+0:Show/Hide right tool panel

option+command+1:show the file inspector

option+command+2:show quick help inspector


View Editor Organization

control+1:Show Related Items(例如Callers/Callees、Includes/Included By)。可输入实时搜索匹配。

control+2/3:Show Previous/Next History。输入实时搜索匹配。

control+4:Show Top Level Items
control+5:Show Group Files(当前文件夹内的所有文件)输入实时搜索匹配。

control+6:Show Document Items(当前文件的Symbols)。输入实时搜索匹配。

可直接选中符号,然后“Navigate->Reveal in Symbol Navigator”,打开该接口的符号列表。

 

command+J:焦点切换(Move Focus),可配合鼠标和方向键。带‘+’的“Move focus to a new assistant editor”可以快速在辅助编辑窗口中打开头文件(*.h)/实现文件(*.m,*.mm)。

shift+command+J:在项目导航中定位当前文件(Reveal in Project Navigator)


3.基本操作

command+[/]:向前/向后缩进

command+/:注释选中的代码

command+shift+[/]:切换标签页
单指左右滑动(control+command+←/→):在单标签页打开的多个文件间切换
option+command+←/→:折叠当前代码块

option+shift+command+←/→:折叠该文件内所有代码块(方法/函数)

option+command+[/]:Move Line Up/Down

shift+command+Y:显示控制台(Show/Hide the debug area

option+command+R:编辑配置(Edit Scheme)


括号匹配:双击某个分隔符(如{}、()、[] 等),Xcode会选中匹配代码块。

焦点列:灰色深度与代码嵌套深度相关,鼠标悬停可突出显示右侧相应代码块,鼠标单击可折叠右侧相应代码块(Code Folding)。

说明从左到右,依次是“导航窗格(Navigator)->边列(Gutter)->焦点列(Focus Ribbon)->代码编辑窗口(Standard Editor)”。


4. 符号定位跳转

control+command+↑/↓:切换头文件/实现文件(switch between a source file (.m,*.mm,*.cc) and the associated header (.h) file)。
shift+command+O:Open Quickly,可快速查找“文件”、符号”。
shift+command+F(command+3):全局查找。

command+点击Editor中选中的符号:跳转到符号定义(jump to definition)。

control+command+J:跳转到指定符号的定义处或实现处(Go to Declaration/Definition)。

右键或菜单File->Show in Finder:在Finder中定位该文件

5.辅助编辑窗口(Assistant Editor)

Assistant Editor有点类似VC中的Code Definition Window。
option+command+enter:打开Assistant Editor。

command+enter:关闭Assistant Editor。

使用快捷键进行切换或跳转动作时,若同时按下option可以在辅助编辑窗口中打开相应文件或符号(For optional navigation (Option-clicking or Option-choosing a file), opens the file in a new Assistant editor pane.)。若在辅助窗口中操作,则在主窗口(Standard Editor)中打开。

 

option+点击Project Navigator中选中的文件:在辅助编辑窗口中打开选中文件。

option+command+点击Editor中选中的符号:在辅助编辑窗口中打开符号定义(jump to definition in assistant editor)。

option+control+command+↑/↓:在辅助窗口中打开对应的头文件(*.h)/实现文件(*.m,*.mm,*.cc)。

 

 

点击查看shift+command+Oshift+command+F(command+3)选中的文件或符号时,可同时按下option在辅助编辑窗口中打开

control+1~6中打开选择结果时,均可同时按下option在Assistant Editor中打开。

若在按下option的同时按下shift通常会出现一个导航窗格,可选择在new window/tab/assistant-editor显示打开。

For Option-Shift navigation (Option-Shift-click or Option-Shift-choose a file), Xcode displays a graphical navigation chooser showing the current layout. The chooser prompts you to open the file in any open editor pane in any window and tab, or to open the file in a new editor pane, window, or tab.

6.代码自动完成功能

esc就当前输入上下文呼出/隐藏Auto Completion提示;上下方向键在提示中选择选项,enter(return)选中,tab可一截一截匹配;tab可在各个占位符之间移动

输入Objective-C对象及 ],自动完成中缀符(infix natation)包围。

 


7.帮助文档(Documentation and API References Help)

option+点按:查看选中符号的帮助提示(Quick Help for Selected Item)。
option+双击:打开选中符号的帮助文档。

 


 

8.环境变量(Build Setting Macros

 

(1)查看环境变量宏

命令行进入HelloWorld工程目录,执行xcodebuild命令并带上“-showBuildSettings”参数:

 

iMac-Faner:HelloWorld faner$ xcodebuild -project HelloWorld.xcodeproj -target HelloWorld -configuration Debug -showBuildSettings > xcodebuild_showBuildSettings.txt

xcodebuild_showBuildSettings.txt中保存了Build settings for action build and target "HelloWorld”:,其中dump了所有的环境变量。

(2)Xcode5(macosx10.9)的部分环境变量

约定1:~=当前账户的HOME目录,例如“/Users/faner”。

约定2:build构建基础路径BUILD_PATH = ~/Library/Developer/Xcode/DerivedData/Build。可通过“File->Project Settings”查看Derived Data Location

约定3:环境变量宏(Build Setting Macros)引用格式:${MACRO},同Build Phases Run Script中的语法。

下面是摘选自xcodebuild_showBuildSettings.txt的部分常用环境变量。

(a) ARCH & PLATFORM & SDK

ARCHS = i386

CURRENT_ARCH = i386


PLATFORM_DIR = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform

PLATFORM_NAME = macosx


SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk

SDK_DIR = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk

SDK_NAME = macosx10.9

(b) PROJECT & SOURCE

PROJECT = HelloWorld

PROJECT_DIR =~/Projects/Learn Objective-C/HelloWorld

PROJECT_FILE_PATH =${PROJECT_DIR}/HelloWorld.xcodeproj

PROJECT_NAME = HelloWorld


SOURCE_ROOT =${PROJECT_DIR}

SRCROOT =${PROJECT_DIR}

(c) BUILD & CONFIGURATION

BUILD_DIR =BUILD_PATH/Products

BUILD_ROOT =BUILD_PATH/Products

BUILT_PRODUCTS_DIR =BUILD_PATH/Products/Debug


CONFIGURATION = Debug

CONFIGURATION_BUILD_DIR =BUILD_PATH/Products/Debug

CONFIGURATION_TEMP_DIR =BUILD_PATH/Intermediates/HelloWorld.build/Debug

(d) PRODUCT & TARGET

PRODUCT_NAME = HelloWorld

PRODUCT_TYPE = com.apple.product-type.tool// Project Template: Command Line Tool


TARGET_BUILD_DIR =BUILD_PATH/Products/Debug

TARGET_NAME = HelloWorld


 

9.运行调试

 

command + B:构建(Buid)

command + R:运行(Run),可能会先编译。若按下control直接运行上次build的product(Run Without Building)。

command + .:停止运行(Stop)


command + \:当前行设置/取消断点;通过鼠标点击蓝色断点来启用/禁用当前行断点。

 

command + Y:全局激活或禁用所有的断点,激活进入调试模式(此时断点蓝色可见)。


编辑断点(Edit Breakpoint):

 

Condition:设置断点的触发条件,例如“i==3”(注意不能有空格)表示当i等于3时该断点才会被触发。

Ignore:设置断点需要被忽略多少次才会中断,若设置成5则表示第6次遇到该断点时才触发。

Action:设置断点触发时的动作,可以为Debugger Command、Log Message、Shell Command或Sound。

例如可设置以下Debugger Command:

(1)读取std::string sig的内存buffer值:mem read sig.c_str() -c sig.size()

(2)打印NSData实例sig:po sig

 


F6:下一步(Step Over),逐过程单步调试,不进入函数体。

(fn+)F7:进入(Step Into)函数体。可能与多媒体键有冲突,故需要fn辅助。

(fn+)F8:跳出(Step Out)函数体。可能与多媒体键有冲突,例如呼叫iTunes,故需要fn辅助。

control+command+Y:逐断点(continue)继续执行。


shift+command+M:Debug Workflow->View Memory

command+K:Debug Workflow->Clear Console

Debug Workflow->ShowDisassembly When Debugging,可进行汇编指令级调试。


lldb调试命令

(1)n/next:step over;

(2)s/step:step into;

(3)finish:step out;

(4)c/continue:goto next breakpoint;

(5)p: print;

(6)expression:后接表达式,同p。

(7)memory read-- Read from the memory of the process being debugged.

dump指定地址的内存,后接起止地址或-c指定count加起始地址。可help mem read查看帮助:

Syntax

 

memory read <cmd-options> <address-expression> [<address-expression>]

 

 

Command Options Usage:

 

 

size指定内存块(block/item)的大小,默认为1byte。

 

    --size <byte-size> )The size in bytes to use when displaying with the selected format.

 

count指定内存块(block/item)的个数,可配合起始地址使用。

 

    -c <count> ( --count <count> )The number of total items to display.

 

format指定内容显示格式,格式符同print:c-char,s-string,d-decimal,x-hex。

 

    -f <format> ( --format <format> )Specify a format to be used for display.

 

 

Command Samples:

 

 

(a)起止地址

 

(lldb)mem read 0x10b88f0c 0x10b88f0c+9

 

0x10b88f0c: 39 38 37 36 35 34 33 32 31                       987654321

 

(b)起始地址+内存块count

 

(lldb)mem read 0x10b88f0c -c 9

 

0x10b88f0c: 39 38 37 36 35 34 33 32 31                       987654321

 

(c)起始地址+内存块size+内存块count(dump hex format)

 

(lldb)memory read -s 1 -f x -c 9 0x10b88f0c

 

0x10b88f0c: 0x39 0x38 0x37 0x36 0x35 0x34 0x33 0x32

 

0x10b88f14: 0x31

 

(d)起始地址+内存块size+内存块count(dump char format)

 

(lldb)memory read -s 1 -f c -c 9 0x10b88f0c

 

0x10b88f0c: 987654321

 

(e)起始地址+内存块size+内存块count(dump string format)

 

(lldb)mem read 0x10b5cf2c -f s -c 1

 

0x10b88f0c: "987654321"

 

(f)起始地址+内存块size+内存块count(dump int format)

 

(lldb)memory read -s 4 -f x -c 3 0x10b88f0c

 

0x10b88f0c: 0x36373839 0x32333435 0x109f0031

 

(8)memory write-- Write to the memory of the process being debugged.

改写指定地址的内存,可help mem write查看帮助。

 

Syntax: memory write <cmd-options> <address> <value> [<value> [...]]


10.设置NSZombieEnabled调试EXC_BAD_ACCESS

 

当你对已释放的对象发送消息(90%的可能是对引用计数为0的对象再release)或release那些autorelease对象时,就会出现报EXC_BAD_ACCESS这样的错误。
默认设置下 Xcode不会给你定位具体是哪一行代码不该去使用已释放的对象,或者release用错了。
Product -> EditSchemeoption+command+R -> Diagnostics ,勾选“Objective-C”之后的“Enable Zombie Objects”。
设置NSZombieEnabled环境变量后,一个对象销毁时会被转化为_NSZombie;设置NSZombieEnabled后,当你向一个已经释 放的对象发送消息,这个对象就不只是报EXC_BAD_ACCESS Crash,还会放出一个错误消息,然后以一种可预测的可以产生debug断点的方式消失, 因此我们可以找到具体或者大概是哪个对象被错误的释放或引用了。
注意:NSZombieEnabled只能在调试的时候使用,千万不要忘记在产品发布的时候去掉,因为NSZombieEnabled不会真正去释放dealloc对象的内存,一直开启后果自负!

分享到:
评论

相关推荐

    Xcode常用快捷键汇总

    ### Xcode常用快捷键汇总与解析 #### 快捷键概览 Xcode作为iOS开发的重要工具之一,其丰富的功能和强大的性能为开发者提供了极大的便利。为了提高编码效率,掌握一些常用的快捷键是非常必要的。本文将详细介绍...

    Xcode常用快捷键

    Xcode作为苹果官方开发工具,为开发者提供了丰富的功能与便捷的快捷键,极大地提高了开发效率。以下是对Xcode中一些常用快捷键的详细解析: #### 文本操作类 - **Control-F**:将光标向右移动一个字符。 - **...

    xcode常用快捷键操作大全.docx

    ### Xcode常用快捷键操作大全 Xcode是苹果公司为开发者提供的集成开发环境(IDE),主要用于iOS、iPadOS、macOS、watchOS以及tvOS的应用程序开发。掌握Xcode中的快捷键能够极大地提高开发效率,下面将详细介绍Xcode...

    图文解释XCode常用快捷键的使用

    一、运行和调试快捷键 快捷键能够帮助开发者快速地执行程序运行和调试操作。在XCode中,运行和停止程序的快捷键分别为: - Command+R:运行程序; - Command+.:停止程序运行; - F6:单步调试,进入函数; - F7:...

    xcode4自定义主题和自定义快捷键

    7. **工具集成**:Xcode集成了许多开发工具,如版本控制系统Git、调试器、模拟器等。文章可能也会提到如何调整这些工具的配置,使其更符合个人的开发习惯。 总的来说,这篇文章提供了关于如何个性化Xcode 4环境的...

    Xcode 快捷键列表

    这份"Xcode快捷键列表"正是为此目的而设计的,它详细列举了Xcode中的各种常用和不常用的快捷键,帮助开发者熟练掌握Xcode的使用技巧。 Xcode是Apple官方提供的集成开发环境(IDE),用于编写iOS、macOS、watchOS和...

    Xcode4.0快捷键图文解说

    2. **调试与运行快捷键**:`Cmd + R`运行项目,`Cmd + Option + I`进行编译时的静态分析,`Cmd + Shift + Y`在模拟器中显示设备控制台,这些快捷键在调试阶段尤其实用。 3. **导航与查找快捷键**:`Cmd + Shift + T...

    Xcode 15.4 真机调试

    3. **断点与调试器**:Xcode支持LLDB调试器,可以在代码中设置断点。当程序执行到断点时,会暂停,允许查看变量值、步进代码、检查调用堆栈等。此外,Xcode的变量观察窗口、控制台输出和线程视图也是调试过程中的...

    xcode快捷键

    ### Xcode快捷键详解 #### 一、文件操作 **新建与打开** - **CMD + N**: 新建文件。此快捷键可用于快速创建新的源文件或其他类型的文件。 - **CMD + SHIFT + N**: 新建项目。当需要启动一个新的工程项目时非常...

    Xcode常用快捷键(二)

    这些快捷键不仅适用于日常编码,还适用于项目管理和调试,使得开发者能够更高效地与Xcode交互。 通过学习并熟练应用这些快捷键,开发者可以减少鼠标依赖,提高编程速度,从而在源码开发和工具使用中展现出更高的...

    xcode快捷键大全

    Xcode的快捷键能够极大地提高开发者的工作效率,以下是基于提供的部分内容整理的Xcode快捷键大全: 1. **文件操作**: - `CMD + SHIFT + N`:创建新项目 - `CMD + ALT + W`:关闭项目 - `CMD + N`:创建新文件 ...

    Xcode 快捷键pdf版

    #### 一、Xcode概述与快捷键的重要性 Xcode作为苹果官方提供的集成开发环境(IDE),被广泛应用于iOS、macOS、watchOS以及tvOS的应用程序开发。为了提高开发效率,掌握Xcode中的快捷键是非常重要的。通过熟练使用...

    Xcode真机调试10.0

    6. **开始调试**: 点击Xcode中的绿色运行按钮(或按⌘R快捷键),Xcode会编译代码并部署到所选设备。在设备上,你会看到应用启动并进入调试模式。Xcode的左侧工具栏提供了一系列调试工具,如变量查看器、控制台输出...

    ios开发 xcode快捷键查询手册

    5. 调试快捷键 - 断点设置和取消用【Command+\】表示。 - 允许或禁用当前断点用【Command+OPT+\】。 - 查看全部断点的快捷键是【Command+OPT+B】。 - 编译并运行不触发断点的代码用【Command+R】。 - 编译并...

    xcode 12.5 iOS 14.5 真机调试包

    《Xcode 12.5与iOS 14.5真机调试技术详解》 在移动应用开发领域,Xcode和iOS系统版本的更新总是备受关注。本文将深入探讨Xcode 12.5和iOS 14.5在真机调试过程中所涉及的关键知识点,帮助开发者更好地理解和掌握这一...

    XCode快捷键.pdf

    本文将详细解析Xcode中的常用快捷键,帮助开发者更加高效地进行编码、调试和项目管理。 一、文件操作 1. `CMD + N`:新建文件 2. `CMD + SHIFT + N`:新建项目 3. `CMD + O`:打开文件 4. `CMD + S`:保存文件 5. ...

    IOS Xcode中快捷键大全

    为了提高开发效率,掌握Xcode的快捷键是非常重要的。以下是一些常用的Xcode快捷键,它们可以帮助开发者快速进行各种操作: 1. **新建项目**:`Command + Shift + N` 2. **新建文件**:`Command + N` 3. **偏好设置*...

    iPhone XCODE 快捷键汇总

    ### iPhone Xcode 快捷键汇总与使用技巧详解 Xcode 是苹果官方为开发者提供的集成开发环境(Integrated Development Environment, IDE),主要用于iOS、iPadOS、macOS、watchOS 和 tvOS 的应用程序开发。掌握Xcode ...

    Xcode 12调试包

    5. **开始调试**:现在你可以选择你的项目,按下运行按钮(或者快捷键Command + R)在真机设备上启动调试。 ### 注意事项 - 在真机调试时,确保你的设备已经越狱或获得了合法的开发者证书,否则无法进行安装和调试...

    XCode iOS 15.4 真机调试包

    使用方法: 将下载好的调试包解压,回到桌面 快捷键command+shift+g前往文件夹: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport 把解压后的文件放入到该目录下,关闭Xcode...

Global site tag (gtag.js) - Google Analytics