
在单机程序的开发中，单步调试的能力对于程序的开发中的除错是十分重要的。然而，在分布式系统下，单步调试变的难以使用，许多情况下程序员都只能依赖日志进行除错。

本节介绍bucky的问题诊断与调试技巧。bucky创新性的以call chain作为分布式系统里类似进程一样的抽象，并基于call chain提供了易于使用的日志系统。同时，bucky也提供了全本地模式的开发支持，让程序员们可以实现`All in one`的调试
体验。更近一步，bucky还提供了远程调试的能力。多种方式的调试/除错支持，让使用bucky开发高可用分布式系统如虎添翼。

### 日志查看

登陆 www.buckycloud.com 后进入app控制台，可以查看app对应的如下信息：
- 资源监控
- 全局knowledges信息，点击`k管理`查看。
- 已经发布到bucky cloud的XARPackage信息，点击`r管理`查看。
- 日志工具，包括
  - 崩溃日志
  - 实时日志
  - 历史日志

### 本地调试

bucky支持全本地模式调试`XARPackage`代码。

首先，需要对使用的数据库提供本地支持。
1. 如果使用了mysql，则需要本地安装mysql。
2. 如果使用了mongodb，则需要本地安装mongodb。
3. 如果使用了redis，则需要本地安装redis，并启动。
4. 使用`bucky config -localdebug`配置对应的用户名、密码。

其次，使用如下命令本地执行代码：
```
bucky debug -main test/account/test_account.js
```

如果想使用Visual Studio Code调试器来调试，可以通过`-vscode`选项获得准备好的配置信息：
```
bucky debug -main test/account/test_account.js -vscode
```

可以得到如下的Visual Studio Code配置参数：
```
{
    "type": "node",
    "request": "launch",
    "name": "local-debug",
    "program": "/usr/local/lib/node_modules/buckyos/tools/node_loader.js",
    "args": [
        "/usr/local/lib/node_modules/buckyos/tools/node_loader.js",
        "-main",
        "/Users/admin/tmp/test/account/test_account.js",
        "-app",
        "/Users/admin/tmp/dist/bucky/bucky_meta.json",
        "-packages_dir",
        "/Users/admin/tmp/dist/bucky",
        "-local_debug",
        "/Users/admin/tmp/dist/bucky/knowledges.json"
    ],
    "cwd": "/Users/admin/tmp/test"
}
```

使用Visual Studio Code打开HelloBucky目录，配置launch.json的configurations节点，添加上述配置后，即可F5本地调试代码，
可以在src/account/account.js里下断点。

### 远程调试

// bucky即将提供直接线上远程调试的能力！敬请期待！


