`
kuan
  • 浏览: 15179 次
  • 性别: Icon_minigender_1
  • 来自: 台灣
最近访客 更多访客>>
社区版块
存档分类
最新评论

除錯(Debug)

阅读更多
首先要和大家說明,我自己本身並沒有使用除錯器的習慣,所以希望針對這個部份大家可以儘量提出您的意見.

我們先以一個專案做範例,假設我們使用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. 有時庫文件的跳躍似乎不太靈光,我會想辦法解決的.....
分享到:
评论
3 楼 exploder 2009-03-12  
dfl需要的编译命令是dfl.exe,而poseidon使用的是dmd.exe,请教如何在Poseidon中配置使得能进行dfl程序的编译。
2 楼 seagate 2008-05-17  
现在能使用了,感谢
1 楼 Colorful 2008-05-13  
想不到還有這個功能,今番要好好試用一下了。

相关推荐

    搜寻器:Chromium Puppeteer网站搜寻器

    除错 DEBUG=crawler: * ./crawl -u https://www.dadoune.com 选件 --maxRadius或-m爬网程序将从条目URL探索的最大链接深度。 --resume或-r在过早退出进程后继续爬网,或将其他爬网程序添加到现有爬网。 --url或-u...

    用DEBUG学习汇编语言

    DEBUG的主要功能是进行程序的除错,允许程序员直接查看和修改内存中的数据、寄存器的状态,以及执行程序的指令。使用DEBUG,可以跳过复杂的编译和链接过程,简化了初学者的入门步骤,因为它不需要了解太多与指令无关...

    node-api-best-practices

    除错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回车即可...

    debug:调试重写以适合我的口味

    除错 重写以适合我的口味-仅node.js 安装 直接从安装 npm install jeromedecoster/debug 从文件安装 { " dependencies " : { " debug " : " jeromedecoster/debug " } } 例子 const debug = require ( 'debug' )...

    windows用户态程序高效除错.pdf

    ### Windows用户态程序高效除错知识点总结 #### 核心概念与目的 - **文档概述**:《Windows用户态程序高效除错》是一份详细介绍了Windows环境下用户态程序排错技巧的专业文档。其目的是帮助软件开发者更有效地识别...

    code-debug:VSCode的本机调试

    除错 本地VSCode调试器。 同时支持GDB和LLDB。 安装 按ctrl-p(在OS X上为cmd + p), ext install webfreak.debug在Visual Studio代码中运行ext install webfreak.debug ,然后安装GDB / LLDB。 有关如何设置的详细...

    tomorrow_web:网络实用程序

    网络实用程序除错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.zip

    EMU8086是学习汇编必不可少的工具,它结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。该软件包含了学习汇编语言的全部内容。Emu8086集源代码编辑...

    emu8086汇编语言

    EMU8086是学习汇编必不可少的工具,它结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。该软件包含了学习汇编语言的全部内容。Emu8086集源代码编辑...

    EMU8086教学仿真软件

    EMU8086是学习汇编必不可少的工具,它结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。该软件包含了学习汇编语言的全部内容。Emu8086集源代码编辑...

    Emu8086 V4.07

    EMU8086是学习汇编必不可少的工具,它结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。该软件包含了学习汇编语言的全部内容。Emu8086集源代码编辑...

    Advanced Apple Debugging & Reverse Engineering v2.0 (pdf+源碼)

    RayWenderlich 出版的关於在apple 平台上开发除错及逆向工程的书 xcode 9, swift 4

    ks-aggregate-debug

    除错Kafka流使用简单的窗口聚合案例产生了错误的(重复的)结果events .map((k, v) - > KeyValue . pair(v . split( " , " )[ 1 ], v . split( " , " )[ 0 ])) .groupByKey() .windowedBy( TimeWindows . of( ...

    automaton

    元胞自动机建造cmake -S . -B buildcmake --build build -- -j./build/automaton除错GTK的g_debug()用于调试。要启用调试日志,请使用env变量: G_MESSAGES_DEBUG=all ./build/automaton

    e m u 8086

    EMU8086是学习汇编必不可少的工具,它结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。该软件包含了学习汇编语言的全部内容。Emu8086集源代码编辑...

    jquery 1.12.0 下载

    这三种情况,都使得实际运行的代码不同于开发代码,除错(debug)变得困难重重。 通常,JavaScript的解释器会告诉你,第几行第几列代码出错。但是,这对于转换后的代码毫无用处。举例来说,jQuery 1.9压缩后只有3行...

    jquery 2.2.0

    这三种情况,都使得实际运行的代码不同于开发代码,除错(debug)变得困难重重。 通常,JavaScript的解释器会告诉你,第几行第几列代码出错。但是,这对于转换后的代码毫无用处。举例来说,jQuery 1.9压缩后只有3行...

Global site tag (gtag.js) - Google Analytics