Debugging/zh-cn

测试第一
在你经历痛苦的调试过程之前请使用 测试框架 来检查标准测试是否正常工作. 如果它们未运行完成, 则可能是安装中断.

命令行
FreeCAD 的 "调试" 是由一些内部机制支持的. FreeCAD 的命令行版本提供了一些用于调试支持的选项.

以下是 FreeCAD 0.15 中能识别的选项:

一般性选项: -v [ --version ]     打印版本字符串 -h [ --help ]        打印帮助信息 -c [ --console ]     以控制台模式启动 --response-file arg  也能使用 '@name' 指定

配置: -l [ --write-log ]      输出 log 文件到: $HOME/.FreeCAD/FreeCAD.log --log-file arg          不像 --write-log，这个命令允许记录到任意文件 -u [ --user-cfg ] arg   用于加载/保存用户设置的用户配置文件 -s [ --system-cfg ] arg 用于加载/保存系统设置的用户配置文件 -t [ --run-test ] arg   测试等级 -M [ --module-path ] arg 额外的模块路径 -P [ --python-path ] arg 额外的python路径

生成回溯
如果你运行 FreeCAD 开发中的出血边缘(bleeding edge)版本, 则可能会发生 "崩溃 ". 您可以通过向开发人员提供 "回溯 " 来帮助解决此类问题. 为此, 您需要运行软件的 "调试版本 ". "调试生成 " 是在编译时设置的参数, 因此您需要自己编译 FreeCAD, 或者获取编译 "调试 " 版本.

对于 Linux
Linux 调试 > 必要条件:


 * 安装的 gdb 软件包
 * FreeCAD 的调试版本 (此时仅可通过 从源代码构建)
 * 导致崩溃的 FreeCAD 模式

步骤: 在终端窗口中输入以下内容:

GNUdebugger will output some initializing information. The (gdb) shows GNUDebugger is running in the terminal, now input:

FreeCAD 现在就要启动. 执行导致 FreeCAD 崩溃或冻结的步骤, 然后在终端窗口中输入: (gdb) bt 这将生成一个冗长的列表, 确切地列出程序在崩溃或冻结时正在执行的工作. 将此内容包括在问题报告中.

Print the values of the local variables also. This can be combined with a number to limit the number of frames shown.

对于 MacOSX
MacOSX 调试 > 必要条件:


 * 安装好的软件包 lldb
 * FreeCAD 的调试版本
 * 一个导致崩溃的 FreeCAD 模式

步骤: 在终端窗口中输入以下内容:

$ cd FreeCAD/bin $ lldb FreeCAD LLDB 将输出一些初始化信息. (lldb) 显示调试器正在终端中运行, 现在输入: (lldb) run

FreeCAD 现在就要启动. 执行导致 FreeCAD 崩溃或冻结的步骤, 然后在终端窗口中输入: (lldb) bt 这将生成一个冗长的列表, 确切地列出程序在崩溃或冻结时正在执行的工作. 将此内容包括在问题报告中.

Python 调试
这里是一个在 FreeCAD 中使用 winpdb 的例子:

winpdb
winpdb Debugging > Here is an example of using Winpdb inside FreeCAD:

We need the python debugger: Winpdb. If you do not have it installed, on Ubuntu/Debian install it with:

Now lets setup the debugger.


 * 1) Start Winpdb.
 * 2) Set the debugger password to "test": Go to menu File->''Password" and set the password.

Now we will run a test python script in FreeCAD step by step.


 * 1) 运行 winpdb 并且设置密码 (例如：测试)
 * 2) 使用以下内容创建一个 Python 文件


 * 1) 开始 FreeCAD 并将上述文件加载到 FreeCAD
 * 2) 按 F6 执行
 * 3) 现在 FreeCAD 将变得没有响应, 因为 Python 调试器正在等待
 * 4) 切换到 Windpdb GUI, 然后单击  "附加 ". 几秒钟后, 将出现一个项目  " ", 您必须双击
 * 现在, 当前执行的脚本出现在 Winpdb 中.
 * 1) 在最后一行设置断点并按 F5
 * 2) 现在按 F7 键跟踪 Python 代码 Draft.makeWire

Visual Studio Code (VS Code)
VS Code Debugging > Prerequisites:


 * ptvsd package need to be installedpypi page

Visual Studio Code documentation for remote debugging

Steps: import ptvsd print("Waiting for debugger attach") ptvsd.enable_attach(address=('localhost', 5678), redirect_output=True) ptvsd.wait_for_attach "configurations": [ {           "name": "Python: Attacher", "type": "python", "request": "attach", "port": 5678, "host": "localhost", "pathMappings": [ {                   "localRoot": "${workspaceFolder}", "remoteRoot": "." }           ]        },
 * Add following code at the beginning of your script
 * 1) 5678 is the default attach port in the VS Code debug configurations
 * Add a debug configuration in Visual Studio Code . It should looks like this :


 * In VS Code add a breakpoint anywhere you want.
 * Launch the script in FreeCAD. FreeCAD freeze waiting for attachment.
 * In VS Code start debugging used created configuration. You should see variables in debugger area.