首先要和大家說明,我自己本身並沒有使用除錯器的習慣,所以希望針對這個部份大家可以儘量提出您的意見.
我們先以一個專案做範例,假設我們使用DFL中的一個範例:toolbar.d及toolbar.res;在這之前,我們必須先編譯好dfl.lib及dfl_debug.lib程式庫.(可以參考
http://kuan.iteye.com/blog/189115來建立庫).
1. 進入Tools->Options->Compiler & Debugger->設定Debugger的位置,在這裡建議使用Ddbg V0.11.3版.
2. 新建專案,把toolbar.d及toolbar.res加入專案,進入檔案屬性(Project Property)的Compiler Options中將[-g][-debug][-L/SUBSYSTEM]選取打勾.
3. 選定編譯時連結DFL的偵錯庫(dfl_debug.lib),或者是在toolbar.d中加入:
debug
{
pragma( lib, "dfl_debug.lib" );
}
else
{
pragma( lib, "dfl.lib" );
}
4. 按下Rebuild All編譯生成執行檔,因為專案屬性中選擇[-g],所以此執行檔會含有除錯資訊.
5. 按下Debug->Run Debugger,此時會出現debug視窗:
6. 開啟toolbar.d文件,設定偵錯點(CTRL+滑鼠左鍵):
7. 按下Debug->Run/Resume開始除錯.
上圖中,左邊的視窗是Stack Frame,目前的Frame是以粗斜體來表示;右邊是變數視窗,右上方的Link按鍵若是按下的狀態,視窗的內容會隨著除錯的每一個step自動更新,另外右邊的Refresh按鍵則是立即更新.
8. 另外我們可以觀看Output視窗觀看除錯器輸出的訊息:
9. 我們也可以直接在Output視窗的命令列直接輸入指令:
10. 除了在Variables視窗觀看變數外,我們也可以把滑鼠移到變數上面停止不動,此時會顯示變數的內容(有時會失靈......)
11. 欲結束除錯,只要按下Debug->Stop即可.
12. 有時庫文件的跳躍似乎不太靈光,我會想辦法解決的.....
分享到:
相关推荐
除错 DEBUG=crawler: * ./crawl -u https://www.dadoune.com 选件 --maxRadius或-m爬网程序将从条目URL探索的最大链接深度。 --resume或-r在过早退出进程后继续爬网,或将其他爬网程序添加到现有爬网。 --url或-u...
DEBUG的主要功能是进行程序的除错,允许程序员直接查看和修改内存中的数据、寄存器的状态,以及执行程序的指令。使用DEBUG,可以跳过复杂的编译和链接过程,简化了初学者的入门步骤,因为它不需要了解太多与指令无关...
除错DEBUG = app:*节点src / run.js DEBUG = *节点src / run.js皮棉npm install -D eslint eslint-config-standard设定资料库mysql -u root create database sampledb ;create user sampleuser identified by ' ...
DEBUG其实并不能算是一个编译器,它的主要用途在于除错,即修正汇编程序中的错误。不过,也可以用来写短的汇编程序,尤其对初学者而言,DEBUG 更是最佳的入门工具。因为DEBUG操作容易:只要键入DEBUG回车,A回车即可...
除错 重写以适合我的口味-仅node.js 安装 直接从安装 npm install jeromedecoster/debug 从文件安装 { " dependencies " : { " debug " : " jeromedecoster/debug " } } 例子 const debug = require ( 'debug' )...
### Windows用户态程序高效除错知识点总结 #### 核心概念与目的 - **文档概述**:《Windows用户态程序高效除错》是一份详细介绍了Windows环境下用户态程序排错技巧的专业文档。其目的是帮助软件开发者更有效地识别...
除错 本地VSCode调试器。 同时支持GDB和LLDB。 安装 按ctrl-p(在OS X上为cmd + p), ext install webfreak.debug在Visual Studio代码中运行ext install webfreak.debug ,然后安装GDB / LLDB。 有关如何设置的详细...
网络实用程序除错import debug from 'tomorrow_web/debug';const params = { seconds: 0, options: ['A', 'B', 'C'], clickCount: 0};debug.addInput(undefined, params, 'seconds', { label: 'Seconds'}).listen();...
EMU8086是学习汇编必不可少的工具,它结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。该软件包含了学习汇编语言的全部内容。Emu8086集源代码编辑...
EMU8086是学习汇编必不可少的工具,它结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。该软件包含了学习汇编语言的全部内容。Emu8086集源代码编辑...
EMU8086是学习汇编必不可少的工具,它结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。该软件包含了学习汇编语言的全部内容。Emu8086集源代码编辑...
EMU8086是学习汇编必不可少的工具,它结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。该软件包含了学习汇编语言的全部内容。Emu8086集源代码编辑...
RayWenderlich 出版的关於在apple 平台上开发除错及逆向工程的书 xcode 9, swift 4
除错Kafka流使用简单的窗口聚合案例产生了错误的(重复的)结果events .map((k, v) - > KeyValue . pair(v . split( " , " )[ 1 ], v . split( " , " )[ 0 ])) .groupByKey() .windowedBy( TimeWindows . of( ...
元胞自动机建造cmake -S . -B buildcmake --build build -- -j./build/automaton除错GTK的g_debug()用于调试。要启用调试日志,请使用env变量: G_MESSAGES_DEBUG=all ./build/automaton
EMU8086是学习汇编必不可少的工具,它结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。该软件包含了学习汇编语言的全部内容。Emu8086集源代码编辑...
这三种情况,都使得实际运行的代码不同于开发代码,除错(debug)变得困难重重。 通常,JavaScript的解释器会告诉你,第几行第几列代码出错。但是,这对于转换后的代码毫无用处。举例来说,jQuery 1.9压缩后只有3行...
这三种情况,都使得实际运行的代码不同于开发代码,除错(debug)变得困难重重。 通常,JavaScript的解释器会告诉你,第几行第几列代码出错。但是,这对于转换后的代码毫无用处。举例来说,jQuery 1.9压缩后只有3行...