<!-- 譯者:Github@wizardforcel -->
# 調試 #
Atom拱了一些工具來幫助你理解預料之外的行為和調試問題。這篇指南介紹了一些工具和方法用于幫助你調試,以及提供了一些提交工單(issue)時的幫助信息。
## 升級到最新版本 ##
你可能遇到了在最新版本已經修復的問題。
如果你從源碼中編譯Atom,需要拉回(pull)master的最新版本并重新構建。
如果你使用發布版本,檢查你所使用的Atom是什么版本:
```
$ atom --version
0.178.0-37a85bc
```
訪問[發布列表](https://github.com/atom/atom/releases)來查看是否有更新的版本。你可以從發布頁面下載Atom來升級到最新的版本,或者通過應用中的自動升級工具。應用中的自動升級工具在你重啟Atom,或者點擊`Atom > Check for Update`菜單之后,會檢查和下載新的版本。
## 檢查鏈接的包 ##
如果你開發或者發布Atom的包,可能會有一些遺留的包鏈接到`~/.atom/packages`或者`~/.atom/dev/packages`目錄下。你可以使用:
```
$ apm links
```
來列出所有鏈接的開發包。你可以使用`apm unlink`命令來移除鏈接,詳見`apm unlink --help`。
## 檢查Atom和包的設置 ##
在一些情況下,預料之外的行為可能是Atom或者某個包中的錯誤配置或者缺少配置造成的。
使用`cmd-,`來打開Atom的設置視圖,或者`Atom > Preferences`來打開菜單選項。

在設置面板中檢查Atom的設置,每個選項在[這里](https://atom.io/docs/latest/customizing-atom#configuration-key-reference)都會有個詳細的描述。例如,如果你希望Atom使用硬tab(真的tab)而不是軟tab(空格),你應該取消“Soft Tabs”選項。
由于Atom自帶一些包并且你可以自己安裝附加的包,檢查所有包的列表以及他們的設置。例如,如果你喜歡移除編輯器中間的豎直線,禁用Wrap Guide包。另外,如果你希望Atom移除行尾的空白字符,或者確保文件末尾有個空行,你可以在Whitespace包的選項中設置。

## 檢查快捷鍵 ##
如果你按下快捷鍵之后沒有執行命令,或者執行了錯誤的命令,那個鍵位的快捷鍵可能出了些問題。Atom自帶keybinding resolver,一個小巧的包來幫助你理解執行了哪個快捷鍵。

keybinding resolver會向你展示現有快捷鍵的列表,列表中包含以下內容:
+ 快捷鍵的命令
+ 快捷鍵有效時,用于定義上下文的CSS選擇器
+ 快捷鍵被定義的文件
如果匹配到多個快捷鍵,Atom會根據[選擇器的特性和以及他們被加載的順序](https://atom.io/docs/latest/advanced/keymaps#specificity-and-cascade-order)來決定執行哪個快捷鍵。如果你想要觸發的命令在keybinding resolver中列出,但是并沒有執行,一般由以下兩種原因造成:
+ 快捷鍵并沒有在選擇器定義的上下文中使用。例如,你不能在樹視圖沒有焦點的情況下觸發“Tree View: Add File”命令。
+ 有另一個快捷鍵具有更高的優先級。這通常發生在你安裝的包的快捷鍵和現有的快捷鍵沖突的時候。如果這個包的快捷鍵具有更高的特異性的選擇器,或者更晚被加載,它就會覆蓋現有的快捷鍵。
Atom首先會加載核心功能的快捷鍵,之后才是用戶定義的快捷鍵。由于用戶定義的快捷鍵在隨后加載,你可以使用`keymap.cson`文件來調整快捷鍵并解決問題。例如,你可以[使用`unset!`指令來移除快捷鍵](https://atom.io/docs/latest/behind-atom-keymaps-in-depth#removing-bindings)。
如果你發現一個包的快捷鍵優先級要高于核心功能包,向這個包的GitHub 倉庫提交一個工單可能是個好主意。
## 查看是否在安全模式下出現問題 ##
Atom絕大多數的功能都來源于你安裝的包。一些情況下,這些包可能會導致預料之外的行為、問題或者性能問題。
從命令行在安全模式下啟動Atom,來檢查是否是你安裝的一個包導致了問題:
```
$ atom --safe
```
這會啟動Atom,但是并不會加載`~/.atom/packages`和`~/.atom/dev/packages`中的包。如果安全模式下問題不再出現,那么可能那些包之一導致了問題。
要弄清楚到底是哪個包導致了問題,正常啟動Atom,并且按下`cmd-,`來打開設置。由于設置可以讓你禁用每個包,你可以依次禁用每個包,直到問題不再發生。在你禁用每個包來確保問題不再出現之后,重啟(`cmd-q`)或者重新加載(`cmd-ctrl-alt-l`)Atom。
當你找到導致問題的包之后,你可以禁用或者卸載這個包,并且考慮向這個包的GitHub倉庫提交工單。
## 檢查你的配置文件 ##
你可能在Atom的初始化腳本或者樣式表中定義了一些個性化的功能。在一些情況中,這些個性化的調整可能會導致問題,所以清除這些文件,并重啟Atom。
## 檢查在開發者工具中的錯誤 ##
當Atom中拋出了一個錯誤,開發者工具會在控制臺標簽頁自動展示記錄的錯誤。而如果開發者工具在錯誤觸發之前打開,錯誤的整個棧軌跡會被記錄:

如果你可以重現這個錯誤,使用這種方法來得到全部的棧軌跡。棧軌跡可能會指向你的初始化腳本,或者安裝的某個特定的包,可以禁用它們并且向Github倉庫提交工單。
## 在開發者頁面的CPU profiler中判斷性能問題 ##
如果你在特定的情況中發現了性能問題,如果報告中包含了Chrome的CPU profiler截圖,提供了一些什么東西比較慢的洞察,你的報告會很有用處。
要運行profiler,在命令面板中打開開發者工具(“Window: Toggle Dev Tools”),訪問`Profiles`標簽頁,選擇`Collect JavaScript CPU Profile`并點擊start按鈕。

然后返回Atom并且執行速度慢的操作來做記錄。結束之后按下stop按鈕。切換到`Chart`視圖,會出現一副記錄操作的圖片。嘗試放大緩慢的部分,并且截圖來包含到你的報告中。你也可以保存并發送profile數據,通過按下左邊面板中的名字(例如`Profile 1`)旁邊的`Save`按鈕。

詳見[Chrome的CPU profiling文檔](https://developer.chrome.com/devtools/docs/cpu-profiling)。
## 檢查你是否安裝了開發工具鏈 ##
如果你在使用`apm install`安裝一個包時出現問題,可能是因為那個包依賴了使用本地代碼的庫。所以你需要安裝C++編譯器和Python來安裝它。
你可以運行`apm install --check`來查看Atom是否能夠在你的機器上編譯本地代碼。
關于更多信息,在[構建指導](https://github.com/atom/atom/tree/master/docs/build-instructions)中查看你的平臺上需要先滿足的條件。