在此操作实例中,您将了解如何在本地计算机和Microsoft Windows HPC Server 2008 群集上设置和启动MPI 群集调试程序会话。此操作实例包括使用消息传递界面(MPI) 和打开多进程(OpenMP) 应用程序编程界面(API) 创建应用程序所需的步骤和示例代码。本指南内容:
?使用MPI 群集调试程序的要求
?在Visual Studio 2010 中创建C++ MPI 示例项目
?配置和启动MPI 群集调试程序
?附录:除应用程序二进制外,Visual Studio 部署的文件和CRT(如果要求)
使用MPI 群集调试程序的要求
?您的开发计算机上必须安装了Visual Studio 2010 Professional Edition 或更高版本(包括远程调试程序)。
?您必须在群集上拥有管理权限。
?Visual Studio 必须能够访问要运行调试会话的计算节点。以下方案提供了所需的访问权限:
o您在群集头节点或专用登录节点上开发应用程序。
o所使用群集的计算节点被连接到企业网络(拓扑2、4 或5),并且您的开发计算机连接到了相同的域或是与群集域有信任关系的域。
?要从客户端计算机将应用程序提交到HPC 群集,您必须安装了Microsoft HPC Pa ck 2008。
?要使用Microsoft 消息传递界面构建MPI 程序,需要在开发计算机上安装Windo ws HPC Server 2008 SDK。
在Visual Studio 2010 中创建C++ MPI 示例项目
本部分的示例代码用于一个使用Monte Carlo 模拟估算Pi 值的并行应用程序。
示例代码在每个MPI 进程上运行50,000,000 次迭代计算。在每次迭代计算中,示例代码都生成间隔为[0,1] 的随机数字以确定一组x和y坐标。然后评估坐标组以确定点是否位于行x2 + y2 = 1下。如果点位于该行下,则变量count将加一。每个MPI 的
值count的总和将成为变量result。将位于行(result) 下的总点数乘以四,然后再用所乘的结果除以总迭代计算次数以估算Pi 值。
以下步骤包含Monte Carlo 模拟的两个实现。
创建示例项目的步骤
1.运行Visual Studio 2010。
2.创建一个名为ParallelPI的新C++ Win32 控制台应用程序。使用一个无预编译
头的项目。
1.在“文件”菜单上,指向“新建”,然后单击“项目”。
2.在“新建项目”对话框中,单击“已安装的模板”,然后选择“Visual C++”。(根据Visual
Studio 的设置方式,“Visual C++”可能位于“其他语言”节点下。)
3.在模板列表中,单击“Win32 控制台应用程序”。
4.关于项目名称,请键入:ParallelPI.
5.单击“确定”。此操作将打开“Win32 控制台应用程序”向导。
6.单击“下一步”。
7.在“应用程序设置”中的“其他选项”下,清除“预编译头”复选框。
8.单击“结束”以关闭向导并创建项目。
3.指定此项目的其他属性。
如果您要构建和调试64 位应用程序:
4.在“链接器”下,选择“输入”。
在“附加依赖关系”中,将指针指到文本框中显示的列表开头,然后键入:
msmpi.lib;
5.如果您使用的是OpenMP 代码示例:
在“配置属性”中展开“C/C++”,然后选择“语言”。
在“打开MP 支持”中,选择“是(/openmp)”以启用编译器对OpenMP 的支持。
6.单击“确定”关闭属性页。
以下代码示例使用并行格式库(PPL) 而非OpenMP,使用MPI 集体操作而非点对点操作。
注意:
在MPI 群集调试程序中,不可未经过调试即启动。按Ctrl+F5(或在“调试”菜单上选择“启动时不要进行调试”)也可以启动调试。
在本地计算机上调试一个MPI 进程
要在本地计算机上仅使用MPI 进程进行调试,请使用与要调试任何其他应用程序相同的进程。在程序中希望的位置设置一个断点,然后按F5 启动调试程序。
MPI 程序通过端口上的IP 进行通讯。首次启动MPI 程序时,可能会出现一条防火墙安全警告,显示已经打开一个端口。阅读警告消息并确保了解了您对系统所做的更改。您必须解除防火墙锁定以继续在本地计算机上调试。
在本地计算机上调试多个MPI 进程
以下步骤描述了如何为ParallelPI启动本地调试会话。
在运行着四个MPI 进程的本地计算机上启动MPI 群集调试程序的步骤
1.在“解决方案资源管理器”中,右键单击Parallel PI,然后单击“属性”。此操作将打开“属性页”对话框。
2.展开“配置属性”,然后选择“调试”。
3.在“要启动的调试程序”中,选择“MPI 群集调试程序”。
4.在“运行环境”中,从下拉列表选择“编辑Hpc 节点”。此操作将打开“节点选择器”对话框。
5.在“头节点”下拉列表中选择“localhost”。
6.在“进程数”中选择“4”。
7.单击“确定”保存更改并关闭“节点选择器”对话框。
8.ParallelPI将接受一个确定要运行的迭代计算次数的参数。默认次数为
50,000,000。对于本地调试会话,请根据下面的步骤将迭代次数减少为5,000:
在“应用程序参数”中键入5000。
9.单击“确定”保存更改并关闭“属性页”。
10.在并行for循环代码中设置一个断点。
11.按F5 启动调试程序。
12.将显示五个控制台窗口:一个cmd.exe窗口和四个ParallelPI.exe窗口(每个窗口用于您启动的每个进程)。与排名0 进程对应的控制台窗口显示了迭代计算数和所计算的Pi 估值。
13.在“调试”菜单上单击“窗口”,然后单击“进程”。
14.通过双击“进程”窗口中的一个进程以设置用于调试的活动进程。
注意:
当调试多个进程时,默认情况下断点将会影响所有正在调试的进程。为避免在不希望的位置中断各个进程,请取消选择“一个进程中断时中断所有进程”选项。(在“工具”菜单上单击“选项”,然后选择调试)。有关如何更改中断行为的详细信息,请参阅如何:中断执行。在群集上调试一个或多个MPI 进程
在群集上启动MPI 调试程序时,调试程序会将您的应用程序作为作业提交给群集。与您的项目(x86 或x64、调试或发布)匹配的Visual C 运行时必须位于计算节点的工作目录中。如果计算节点上没有这些正确的运行时,需通过指定“要部署的其他文件”属性将这些运行时纳入调试程序部署中。以下过程包含部署OpenMP 调试运行时DLL 的一个步骤。默认情况下,当启动MPI 群集调试程序时,C 运行时(CRT) 库将被部署。如果无正确的运行时,则尝试运行应用程序时将会出现并列错误。如果未包含OpenMP 运行时,将不会调用断点。
在群集上启动MPI 调试程序
1.在“解决方案资源管理器”中,右键单击Parallel PI,然后单击“属性”。此操作将打开“属性页”对话框。
2.展开“配置属性”,然后选择“调试”。
3.在“要启动的调试程序”中,选择“MPI 群集调试程序”。
4.在“运行环境”中,从下拉列表选择“编辑Hpc 节点”。此操作将打开“节点选择器”对话框。
5.在“头节点”下拉列表中,为群集选择要使用的头节点名称。
头节点列表已从Active Directory 域控制器填充。仅域中的群集会显示在列表中。如果看不到您的头节点,请在属性字段中键入头节点名称或IPv4 地址。
6.在“进程数”中选择“4”。
7.在“计划进程”中,选择如何分配您的进程。您可以选择每“核”、“套接字”或
“节点”分配一个进程。
8.单击“确定”保存更改并关闭“节点选择器”对话框。
9.在“部署目录”中,在头节点上指定一个共享目录。如果部署目录不存在,并且您
拥有指定根目录的写入权限,将自动创建部署目录。
当HPC Pack 2008 包安装到头节点上时,将创建CcpSpoolDir共享资源目录。例如,键入以下内容,其中
\\
10.在“工作目录”中,在每个计算节点上指定一个本地工作目录。例如,键入以下内
容,其中
C:\Users\
11.如果使用的是含OpenMP 的示例代码,请添加OpenMP 调试运行时DLL 文件
(Microsoft.VC100.DebugOpenMP\vcomp100d.dll):
1.在“要部署的其他文件”中,选择<编辑文件…>。此操作将打开“文件和文件夹选择器”
对话框。
2.单击“添加文件”,导航到Microsoft.VC100.DebugOpenMP\vcomp100d.dll,选择
该文件,然后单击“打开”。
例如,在一台基于x86 的计算机上,64 位版的Windows Server 2008 操作系统上的默认位置为:
C:\Program Files (x86)\Microsoft Visual Studio
10.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC100.DebugOpenMP\
vcomp100d.dll
3.单击“确定”添加文件并关闭“文件和文件夹选择器”对话框。
12.单击“确定”保存更改并关闭“属性页”。
13.在并行for循环代码中设置一个断点。
14.按F5 启动调试程序。
15.由于您向群集提交了一份作业,因此系统会提示您输入连接到群集的密码。键入密
码,然后按Enter。
16.启动调试程序后,请检查进程窗口以验证各个进程的位置。对于每个进程,可通过
“传输限定符”列查看进程运行的计算节点。
附录:Visual Studio 部署了除应用程序二进制外的文件和CRT(如果要求)
?DebuggerProxy.dll
?DebuggerProxy.dll.manifest
?Delete_from_workdir.bat:用于删除部署文件的脚本
?Deploy_to_workdir.bat:用于将文件从部署目录复制到工作目录的脚本
?dbghelp.dll
?mcee.dll
?Mpishim.bat:用于启动远程调试程序的脚本
?Mpishim.exe:安排IDE 和Msvsmon.exe 之间通讯的程序?Msvsmon.exe:远程调试程序
?Msvsmon.exe.config
?PfxTaskProvider.dll
?symsrv.dll
?symsrv.yes
?vbdebug.dll
?2052\msdbgui.dll
?2052\vbdebugui.dll
[from:]https://www.wendangku.net/doc/d411106372.html,/zh-cn/xna/ee441265.aspx
软件调试技巧 一、软件调试方法 软件调试有很多种方法。常用的有4种,即强行排错法、回溯排错法、归纳排错法和演绎排错法。 1.强行排错法 这种方法需要动脑筋动的地方比较少,因此叫强行排错。通常有以下3种表现形式: ●打印内存变量的值。在执行程序时,通过打印内存变量的数值,将该数值同预期的数值进行比较,判 断程序是否执行出错。对于小程序,这种方法很有效。但程序较大时,由于数据量大,逻辑关系复杂,效果较差。 ●在程序关键分支处设置断点,如弹出提示框。这种方法对于弄清多分支程序的流向很有帮助,可以很 快锁定程序出错发生的大概位置范围。 ●使用编程软件的调试工具。通常编程软件的IDE集成开发环境都有调试功能,使用最多的就是单步调 试功能。它可以一步一步地跟踪程序的执行流程,以便发现错误所在。 2.回溯排错法 这是在小程序中常用的一种有效的调试方法。一旦发现了错误,可以先分析错误现象,确定最先发现该错误的位置。然后,人工沿程序的控制流程,追踪源程序代码,直到找到错误根源或确定错误产生的范围。 3.归纳排错法 归纳法是一种从特殊推断一般的系统化思考方法。归纳法调试的基本思想是,从一些线索(错误的现象)着手,通过分析它们之间的关系来找出错误,为此可能需要列出一系列相关的输入,然后看哪些输入数据的运行结果是正确的,哪些输入数据的运行结果有错误,然后加以分析、归纳,最终得出错误原因。 4.演绎排错法 演绎法是一种从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考方法。调试时,首先根据错误现象,设想及枚举出所有可能出错的原因作为假设。然后再使用相关数据进行测试,从中逐个排除不可能正确的假设。最后,再用测试数据验证余下的假设是否是出错的原因。 二、调试的原则 调试能否成功一方面在于方法,另一方面很大程度上取决于个人的经验。但在调试时,通常应该遵循以下一些原则。 1.确定错误的性质和位置的原则 用头脑去分析思考与错误征兆有关的信息,避开死胡同。调试工具只是一种辅助手段。利用调试工具可以帮助思考,但不能代替思考。通常避免使用试探法,最多只能将它当作最后的手段,毕竟小概率事件有时也会发生。 2.修改错误的原则 在出现错误的地方,很可能还有别的错误。修改错误的一个常见失误是只修改了这个错误的征兆或这个错误的表现,而没有修改错误本身。当新修正一个错误的同时又引入新的错误。 三、有效减少调试时间 1.绘制程序流程图 一些程序员认为,绘制程序流程图是件繁琐的事,而且浪费时间。其实不然,当读者对着偌大的程序一筹莫展时,面对纷纭复杂的关系理不出头绪时,使用程序流程图绝对可以事半功倍。 因此建议在编制程序前先绘制流程图,这样编程的思路有条理,调试时同样会有条不紊。若编制程序之前没有绘制流程图,当排错没有进展时,可以马上编写流程图。你会发现,程序中某些分支或细节被忽略了,这些细节可能就是程序出错的地方。 2.不要过多地依赖单步调试 有些程序对时间很敏感。数据只在那么一瞬间有效,可谓稍纵即逝。所以等到单步执行到那里时,
3-2节程序调试的方法 编程是一件需要认真和细心的工作。通过让学生从李明同学学习程序设计时所遇到的困难和他情感上所表现出来的“窘态”故事开始,道出程序调试不但需要技巧、更需要有耐心和毅力的道理,从而激发学生学习程序调试的兴趣和热情,拉开了本节的充幕。 接着,布置任务,让学生输入课本P83四段有错误的程序,要求学生自己探究,并改正程序。 最后分析程序运行的情况,总结出程序运行出错的四种类型: 一、拼写错误 1)在工程窗口中,看到红色文字显示的程序是有拼写错误的。 2)同时还要检查其它的拼写错误 Pring改为print Integr改为integer 2、编译时出现的错误 S应该改为a 3、运行时出现的错误 运行时的错误是指编译通过后,在执行程序时出现的错误,如用0作除数等。
例如:a=0的时候,将会出现0作除数的情形 4、逻辑错误 程序运行后,得出的结果不是正确的。这说明程序存在逻辑错误。逻辑错误产生 的原因很多,运算符使用不正确、语句次序不对、循环的设置不对等都可以产生 逻辑错误。 如这里的程序的出口应该是tree>=100 任务: P85 马上行动:
你和同学们能解决以上的问题吗?以合作、交流的方式大胆尝试一下,你会有意外的收获! 一、本节小结: 本节主要通过任务驱动、探究的形式,介绍了程序的错误类型,分析了产生错误的原因,程序的调试与排错的方法,让学生“从做中学”,进一步体验了程序调试的方法和技巧,培养了 学生调试程序的耐心和毅力,提高了学生程序设计的素养。 五、课外练习 编写一个程序,将从键盘输入的一个自然数进行因数分解,输出结果并上机验证。
在此操作实例中,您将了解如何在本地计算机和 Microsoft Windows HPC Server 2008 群集上设置和启动 MPI 群集调试程序会话。此操作实例包括使用消息传递界面 (MPI) 和打开多进程 (OpenMP) 应用程序编程界面 (API) 创建应用程序所需的步骤和示例代码。本指南内容:使用 MPI 群集调试程序的要求在 Visual Studio 2010 中创建 C++ MPI 示例项目配置和启动 MPI 群集调试程序附录:除应用程序二进制外,Visual Studio 部署的文件和 CRT (如果要求)使用 MPI 群集调试程序的要求您的开发计算机上必须安装了 Visual Studio 2010 Professional Edition 或更高版本(包括远程调试程序)。您必须在群集上拥有管理权限。 Visual Studio 必须能够访问要运行调试会话的计算节点。以下方案提供了所需的访问权限:您在群集头节点或专用登录节点上开发应用程序。所使用群集的计算节点被连接到企业网络(拓扑 2、4 或 5),并且您的开发计算机连接到了相同的域或是与群集域有信任关系的域。要从客户端计算机将应用程序提交到 HPC 群集,您必须安装了 Microsoft HPC Pack 2008。要使用 Microsoft 消息传递界面构建 MPI 程序,需要在开发计算机上安装Windows HPC Server 2008 SDK。在 Visual Studio 2010 中创建 C++ MPI 示例项目本部分的示例代码用于一个使用 Monte Carlo 模拟估算 Pi 值的并行应用程序。示例代码在每个 MPI 进程上运行 50,000,000 次迭代计算。在每次迭代计算中,示例代码都生成间隔为[0,1] 的随机数字以确定一组 x 和 y 坐标。然后评估坐标组以确定点是否位于行 x2 + y2 = 1 下。如果点位于该行下,则变量 count 将加一。每个 MPI 的值 count 的总和将成为变量result。将位于行 (result) 下的总点数乘以四,然后再用所乘的结果除以总迭代计算次数以估算 Pi 值。以下步骤包含 Monte Carlo 模拟的两个实现。第一个示例使用的是 MPI 和 OpenMP。有关 OpenMP 的详细信息,请参阅 OpenMP in Visual C++。第二个示例使用的是 MPI 和并行格式库 (PPL)。有关 PPL 的详细信息,请参阅 Parallel Patterns Library (PLL)。创建示例项目的步骤运行 Visual Studio 2010。创建一个名为 ParallelPI 的新 C++ Win32 控制台应用程序。使用一个无预编译头的项目。在“文件”菜单上,指向“新建”,然后单击“项目”。在“新建项目”对话框中,单击“已安装的模板”,然后选择“Visual C++”。(根据 Visual Studio 的设置方式,“Visual C++”可能位于“其他语言”节点下。)在模板列表中,单击“Win32 控制台应用程序”。关于项目名称,请键入:ParallelPI. 单击“确定”。此操作将打开“Win32 控制台应用程序”向导。单击“下一步”。在“应用程序设置”中的“其他选项”下,清除“预编译头”复选框。单击“结束”以关闭向导并创建项目。指定此项目的其他属性。在“解决方案资源管理器”中,右键单击 Parallel PI,然后单击“属性”。此操作将打开“属性页”对话框。展开“配置属性”,然后选择“VC++ 目录”。在“包含目录”中,将指针指到文本框中显示的列表的开头,然后指定 MS MPI C 标头文件的位置,随后添加英文分号 (;)。例如: C:\Program Files\Microsoft HPC Pack 2008 SDK\Include; 在“库目录”中,将指针指到文本框中显示的列表的开头,然后指定 Microsoft HPC Pack 2008 SDK 库文件的位置,随后添加英文分号 (;)。例如,如果您要构建和调试 32 位应用程序: C:\Program Files\Microsoft HPC Pack 2008 SDK\Lib\i386; 如果您要构建和调试 64 位应用程序: C:\Program Files\Microsoft HPC Pack 2008 SDK\Lib\amd64; 在“链接器”下,选择“输入”。在“附加依赖关系”中,将指针指到文本框中显示的列表开头,然后键入: msmpi.lib; 如果您使用的是 OpenMP 代码示例:在“配置属性”中展开“C/C++”,然后选择“语言”。在“打开 MP 支持”中,选择“是(/openmp)”以启用编译器对 OpenMP 的支持。单击“确定”关闭属性页。在主要源文件中,选择全部代码,然后将其删除。将以下示例代码之一粘贴到空的源文件中。第一个示例使用的是 MPI 和 OpenMP,第二个示例使用的是 MPI 和并行格式库 (PPL)。以下代码示例使用的是 MPI 和 OpenMP。函数 ThrowDarts 使用 OpenMP 并行 for 循环,以利用多核硬件(如果可用)。 // ParallelPI.cpp : Defines the entry point for the MPI application. // #include
P L C程序现场调试的方法 Prepared on 24 November 2020
PLC程序现场调试的方法——【非常重要】 02-04 16:42更新林慧玲分类:围观:625人次微信二维码 1、要查接线、核对地址 要逐点进行,要确保正确无误。可不带电核对,那就是查线,较麻烦。也可带电查,加上信号后,看电控系统的动作情况是否符合设计的目的。 2、检查模拟量输入输出 看输入输出模块是否正确,工作是否正常。必要时,还可用标准仪器检查输入输出的精度。 3、检查与测试指示灯 控制面板上如有指示灯,应先对应指示灯的显示进行检查。一方面,查看灯坏了没有,另一方面检查逻辑关系是否正确。指示灯是反映系统工作的一面镜子,先调好它,将对进一步调试提供方便。 4、检查手动动作及手动控制逻辑关系 完成了以上调试,继而可进行手动动作及手动控制逻辑关系调试。要查看各个手动控制的输出点,是否有相应的输出以及与输出对应的动作,然后再看,各个手动控制是否能够实现。如有问题,立即解决。 5、半自动工作 如系统可自动工作,那先调半自动工作能否实现。调试时可一步步推进。直至完成整个控制周期。哪个步骤或环节出现问题,就着手解决哪个步骤或环节的问题。 6、自动工作 在完成半自动调试后,可进一步调试自动工作。要多观察几个工作循环,以确保系统能正确无误地连续工作。 7、模拟量调试、参数确定 以上调试的都是逻辑控制的项目。这是系统调试时,首先要调通的。这些调试基本完成后,可着手调试模拟量、脉冲量控制。最主要的是选定合适控制参数。一般讲,这个过程是比较长的。要耐心调,参数也要作多种选择,再从中
选出最优者。有的PLC,它的PID参数可通过自整定获得。但这个自整定过程,也是需要相当的时间才能完成的。 8、完成上述所有的步骤 整个调试基本算是完成了。但最好再进行一些异常条件检查。看看出现异常情况或一些难以避免的非法操作,是否会停机保护或是报警提示。进行异常检查时,一定要充分考虑到设备与人身的安全! 整个调试基本算是完成了。但最好再进行一些异常条件检查。看看出现异常情况或一些难以避免的非法操作,是否会停机保护或是报警提示。进行异常检查时,一定要充分考虑到设备与人身的安全!
VS2010中的调试技巧 用F9 添加需要监视的行的断点,然后F10进入逐步调试状态,遇到方法需要进入方法的,按下F11进行 我经常看到人们为了到达目标代码位置,而在程序中早早设定了断点,然后反复地按 F10/F11,一步步走到目标代码处。当程序员的确需要仔细观察每一步的状态变化时, F10/F11是合理的选择。然而多数情况下,人们只想快速到达他们真正关心的代码处,这时候F10/F11就不是最佳选择了。 这时,你应该利用―跳到当前光标处‖这个功能。先把光标定位在要测的目标代码行上,再同时按Ctrl和F10,被测程序将直接跳到该行停下。你再也不用按许多次F10/F11了。即使目标代码位于独立的类或方法中,你仍然可以从当前正在检查的地方跳过去。 条件中断 另一种常见的情况是:开发人员设置断点,运行程序,利用不同的输入触发断点,然后在断点处手工检查是否满足某些特定的条件,从而决定是否继续调查。如果当前场景不是他们想要的,按F5继续运行程序,尝试别的输入,手动重复刚才的过程。 针对上述情况,Visual Studio提供了一个方便得多的功能——―条件中断‖。只有当程序满足了开发人员预设的条件后,条件断点才会被触发,调试器中断。这将避免频繁地手工检查/恢复程序运行,大量减少调试过程中的手工和烦琐工作。 如何设置条件断点 设置条件断点非常容易。在特定的行上,按F9设置断点。 然后右击断点–编辑窗口左侧的红点,在上下文菜单上选择―Condition…‖。
这时弹出一个对话框供你设置激活该断点所需的条件。比如:我们希望只有当局部变量paginatedDinners的尺寸小于10时,调试才中断。我们可以写出如下的表达式: 现在我再运行这个程序,实现搜索,只有返回值小于10时,程序运行才会被中断。对于大于10的值,该断点将被跳过。 记录到达断点次数 有时你希望,只有当第N次满足条件的运行到达断点时,才中断程序运行。例如:当第五次返回少于10份晚餐的查询结果时,中断程序运行。 可以通过右击断点,然后在弹出菜单上选择―Hit count…‖菜单命令实现。
一,如果遇到了一些逻辑性很强的问题比如有循环什么的我的方法是在关键地方加入debug.print 变量 这样可以比较好地找到问题 二,msgbox 三,监视窗口,如下面的例子 For i=1 to 10000 A=sqr(i) next i 你想再监视当i=799时A的值,就可以添加监视,方法:点调试,添加监视,选择“当监视值为真时中断”,上面表达式框中写上i=799, 这样你按F5,运行程序,程序会在i=799时中断。其他选项你可以自己去琢磨一下。 一个程序如何顺利的“脱产”,调试的过程是非常重要的。学过、钻研过程序设计的人都有同样的感受,很多情况下,调试程序的过程会比程序编写的过程更为困难。任何一个天才都不敢说,他编的程序是100%正确的。几乎每一个稍微复杂一点的程序都必须经过反复的调试、修改,最终才完成。所以说,程序的调试是编程中的一项重要技术。 程序中的典型错误类型 A类:语法错误。 B类:编译错误。 C类:属性设置错误。 D类:逻辑错误。 调试方法 方法一:利用“MSDN帮助菜单” “MSDN帮助菜单”是一个很好的自学工具,对于出现调试对话框的菜单来说,可以按下“帮助”按钮查看错误原因。 对于一些不是很清楚的函数格式、保留字的作用,也可以借助“帮助菜单”。 方法二:逐过程检查 主要检查代码是否写对,位置有没有错误,关键是要确定一段代码是在哪个事件控制下的。不妨先在脑海中把整个程序过一边,想一想究竟会有哪些事件发生(有些事件是人机互动的,例如:鼠标点击;而有些是机器自己执行的,这时要想到计时器的作用);然后想一想每一件事发生后有什么效果。我们代码所编写的一般就是事件发生后的这个效果,那么以此事件来决定代码所写的位置。 方法三:逐语句检查(顺序、语义) 主要检查每一句代码的顺序是否写对,语义是否正确。 把整个代码从头至尾地读一边,仔细思索每一段子过程什么时候执行,以及每一子过程中的每一句代码什么时候发生,必要时可以在程序段中插入Print语句分段查看;也可用注释语
第一章关于Visual Studio、VC和C++的那些事 第二章安装、配置和首次使用VS2010 本章将帮助大家安装Visual C++ 2010,帮助大家做一些常见的配置,以及第一次使用它来写HelloWord程序。 安装 Visual C++ 2010是属于Visual Studio 2010的一部分,这个在前一章中已经讲解过,实际上Visual C++ 2010也有更多的子版本,正如Windows7有旗舰版、家庭高级版、家庭初级版一样。在上一章的下载地址中有两个版本可以选择,我选择的时候旗舰版,这个功能最全面。 如果你下载完毕了,应该有一个ISO镜像文件,如果你是从我给的地址下载的,那么那个序列号已经被替换成正版序列号,直接安装即可。下面是ISO文件截图: 这就是光盘镜像文件,我们有多种方式可以安装它,你可以把它烧录成光盘,也可以用虚拟光驱软件安装它,由于这个ISO已经被修改过了,你甚至可以直接解压它,然后运行里面的setup.exe进行安装。 这里我使用虚拟光驱进行说明,首先我假设你已经安装好了虚拟光驱软件DAEMON Tools Lite,如果你还没有安装,请去游侠补丁网下载,因为在那里你总是能找到最新的免费版本。 接下来我们通过虚拟光驱加载刚才下载好的ISO镜像:
在弹出的对话框中选择我们下载好的ISO 文件。这个时候,虚拟光驱里面已经替我们打开了ISO 文件,有的机器可能会自动弹出安装提示,有的不会。如果自动弹出安装提示,那么直接通过即可,如果没有弹出,那么用资源管理器方式进入虚拟光驱点击Setup.exe 即可开始安装。
由于我已经安装好了VS2010,所以接下来无法给大家截图了,我就直接用文字描述吧。 当弹出VS2010安装程序之后点下一步,然后我们可能会看到完全最小自定义这样的选项,我推荐大家选择自定义,因为只有这样我们才可以自定我们安装的目录。接下来会选择安装的组件。这个时候我们会看到大量的VS2010的组件,这里我们可以选择是否安装Basic是否安装C#等等,我在网上找到一些图片,虽然跟中文版2010不一样,大家大概的样子是一样的,大家就凑合着看看吧。 下面是开始的界面,我们应该选择安装VS2010.
1、先将WebDev.WebServer20.EXE和WebDev.WebServer40.EXE文件从Program Files (x86)目录中拷贝出来放到c:\dev目录中叶海青叶海青叶海青 2、开始->运行->cmd ,在命令行窗口输入: "C:\dev\WebDev.WebServer20.EXE" /port:5970 /path:"D:\WebSite" /vpath:"/" 该命令执行启动web调试服务器 注意上方的path和vpath分别表示: path:项目文件所在路径 vpath:虚拟目录名称 port:调试端口号(可以自行设置) 3、在web项目上右键->属性,在web选项卡中的“服务器”中“使用自定web服务器”,将服务器url 设置为:http://localhost:5970 4、然后在指定页面中打断点调试; 1、先将WebDev.WebServer20.EXE和WebDev.WebServer40.EXE文件从Program Files (x86)目录中拷贝出来放到c:\dev目录中叶海青叶海青叶海青 2、开始->运行->cmd ,在命令行窗口输入: "C:\dev\WebDev.WebServer20.EXE" /port:5970 /path:"D:\WebSite" /vpath:"/" 该命令执行启动web调试服务器 注意上方的path和vpath分别表示: path:项目文件所在路径 vpath:虚拟目录名称 port:调试端口号(可以自行设置) 3、在web项目上右键->属性,在web选项卡中的“服务器”中“使用自定web服务器”,将服务器url 设置为:http://localhost:5970 4、然后在指定页面中打断点调试;
一、认识调试功能 在组建(build)菜单中,点击开始调试(start debug),在其下级子菜单中,包含了启动调试器运行的各项子命令(如图1所示) 图1 开始调试菜单 各子命令及其功能如下: ?Go:从程序中的当前语句开始执行,直到遇到断点(后面讲)或遇到程序结束。 ?Step Into:控制程序单步执行,并在遇到函数调用时进入函数内部。 ?Run to Cursor:在调试运行程序时,使程序运行到当前光标所在位置时停止,相当于设置了一个临时断点。 二、单步调试代码 利用图1菜单中的Step into功能或按F11键,进入单步调试状态,有一个箭头指向程序的第一行,每按一次F11键,程序再向前执行一行语句,如图2所示。
图2 开始调试后的界面 我们对图2的界面进行观察。 首先,菜单中增加一个调试(debug)菜单,如图中①处,下面是菜单中的部分功能(鼠标浮到上面时,会有提示,请试一试。) ?Step Into(F11):单步调试程序,遇到调用函数时,进入函数内部逐步执行; ?Step Over(F10):也是单步调试程序,遇到调用函数时,并不进入函数内容执行; ?Step Out:调试程序时,从正在执行的某个嵌套结构的内部跳到该结构的外部,常用于知道调用函数中不存在错误的情况; ?Run to Cursor(CTRL-F10):调试程序时,直接运行到插入点处。 其次,和当前正在执行的语句相关的变量,以及其当前的值显示在了②处。 再次,黄色箭头代表了正在执行的位置。 【练习1】 下面,针对求1+2+3+...+100的程序,体验单步执行。步骤: (1)编写如图所示求1+2+3+...+100的程序,排除编译错误; (2)按前述开始单步执行,用“Step Into(F11)”持续执行,在执行过程中,注意观察变量的变化。 ?调试中,要将自己的预期和计算机执行的结果进行比较,当发现不一致,恭喜,问题找到了。
如何使用VS2010调试程序 隋清宇 2010.11.7 在之前的课程中,很多同学向我们反映,不知道如何使用VS2010调试自己的程序。还有一些同学交上来的程序,带了stdafx等VS自动生成的库文件。所以,我有必要在这里简单地讲一下如何使用VS2010编写及调试自己的代码。 关于VS2010如何安装的问题,想必同学们已经都很清楚了,这里就不再赘述。如果有使用Code::Blocks或DevC++等IDE的同学,具体操作和VS2010其实相差并不大,但是在选项或菜单的名称以及快捷键上会有所不同,我在文章中会尽量提到各个操作的英文名称,可以自己参考着尝试摸索一下。 文章中有下划线的词语都是截图中提到的选项,方便同学们对照。 一、建立工程 首先,我们需要在VS2010中建立一个工程(Project),这样才可以对我们的代码进行编译(Compile)、调试(Debug)、生成(Build)等操作。 先在文件菜单选择新建,然后选择项目。 在打开的对话框中,于左侧选择Visual C++,右侧选择空项目(Empty Project)。然后在下面输入想要储存这个工程的位置和给这个工程起的名称。可能你可以选择的项目和我不一样,这些都无妨,只要可以找到Visual C++和空项目就可以了。 需要注意的是,因为我们没有必要为一次作业的代码建立一个解决方案,所以一般情况下,为解决方案创建目录的复选框不勾选就可以了。 在例子中,我选择的存储位置为D:\example\,工程名为myProg1。当工程创建完成的时候,你会发现D:\example\下会多了一个文件夹D:\example\myProg1\(请注意工程名和存储位置的关系),而你这个工程的所有文件都在那个文件夹下。 另外,有同学在创建工程的时候选择了Win32控制台应用程序,这样会导致VS2010生成一些对于我们没有任何用处的代码和文件(比如上文中提到的stdafx),强烈不建议选择此项(但是Code::Blocks需要选择Console Application项建立工程)。
实验一VS2010开发环境及C#基本编程 1.1 C#集成环境使用 一、实验目的 1.熟悉Visual C#.NET集成开发环境。 2.掌握控制台应用程序的开发方法。 3.掌握Windows应用程序的开发方法。 二、实验要求 1. 整理上机步骤,总结经验和体会。 2. 完成实验日志和上交程序。 三、实验内容 题目一:创建控制台应用程序 (1)选择“开始”“程序”“Microsoft Visual Studio 2010”“Microsoft Visual Studio 2010” 命令,启动Visual Studio 2010,并仔细观察起始页的内容。 (2)选择“文件”“新建”“项目”命令,弹出“新建项目”对话框。仔细观察对话框的内容。在“项目类型”列表框中选中Visual C#选项;在“模板”列表框中选中“控制台应用程序”选项;在“名 称”文本框中输入项目名称;在“位置”文本框中输入或选择项目的保存位置。单击“确定”按钮, 将显示控制台应用程序代码编辑窗口,在该窗口内显示系统自动生成的相应代码。仔细观察并 分析这些代码。 (3)在代码编辑窗口内的Main()方法中添加如下代码: Console.Write("当前系统的日期为:"); //将系统的日期转换为长日期字符串表示形式进行输出 Console.WriteLine(DateTime.Now.ToLongDateString()); Console.Read(); (4)选择“文件”“全部保存”命令,保存项目。 (5)选择“调试”“开始执行(不调试)”命令或按【Ctrl+F5】组合键运行程序,并观察运行情况。 (6)在项目的保存位置处查看项目中过的所有文件。 题目二:创建Windows应用程序 (1)从开始菜单启动Visual Studio 2010。 (2)选择“文件”“新建”“项目”命令,弹出“新建项目”对话框。在“项目类型”列表框中选中Visual C#选项;在“模板”列表框中选中“Windows应用程序”选项;在“名称”文本框中输入项目 名称;在“位置”文本框中输入或选择项目的保存位置。单击“确定”按钮,将显示窗口设计器窗 口。 (3)切换到“属性”窗口、“解决方案资源管理器”窗口和“类视图”窗口,查看窗体的属性、项目的组成结构以及项目所设计的所有类。 (4)双击打开“解决方案资源管理器”窗口中的各个文件,在代码编辑器窗口内查看系统自动生成的与该项目有关的代码。 (5)选择“调试”“启动调试”命令,运行程序,查看运行结果,然后关闭窗体。 (6)在窗体上添加一个PictureBox控件和两个Button控件。设置窗体和各控件的属性,如表1-1所示。
A l e a d e r--A O I-调试步骤 与技巧 -标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII
标准注册与调试步骤 1.标准注册: A.电容: 电容的检测主要是检查其焊点、是否贴有元件和是否错料 电容命名格式是C-元 件大小-数字,eg:如图的 电容c0603-1 选定位框定位,框住 本体,便于找位 0603的元件偏移范围在之间, 若偏移范围过大,会导致测试 过程中框偏移而影响测试 注册时规定其中一个焊盘朝右 为零度,若当时元件不是按如图 所示的放置,则按此键旋转,使 B.电阻: 电阻的标准分两部分作,第一部分是看焊点(如下图图一),每二部分是看丝印(如下图图二),这样既可以检测焊点又可以检测是否错料(丝印检测) 电容命名格式是R-阻值(即本体 上的丝印),若同一块PCB板有大 小不同、阻值相同的元件,则R- 阻值-元件大小 焊点检测时不用滤色功能和调 整对比度、亮度 在上面的选项都选择完后,点 击此按钮,确定注册 图一
丝印的变化较多,若与本体 一起作标准,则影响焊点的 检测,且误判较多,很难调顺, 单独对丝印作标准,可以减 少由于丝印变化而带来的误 偏移范围一般填 作丝印检测时通过滤色可以消除 松香对丝印的影响,调整对比度和 亮度可使白的部分更白黑的更黑, 图二 C.三极管: 三极管的的标准分三部分作,具体步骤如下: ⑴本体和两个脚一起框,主要用来检测两个脚的焊点,加上本体能更好定位,编程时若三极管来料较多,都可以用一个来替换,可以节约编程时间,且在调试时可以不考虑丝印对它的影响,只要看焊点是否完好,而检测错料可以对丝印单独作标准{见第 三极管的命名格式是Q-数字,允 许偏移范围一般在加上极性检测 后能更好地检测元件是否贴反,定 位框定位能更准确找位 不管元件原来在PCB板的 放置如何,注册标准时一定 要将焊盘朝右,按此按钮可 以实现
vs2010下调用matlab2012b调试方法 配置环境: vs2010+matlab2012b+win7 64位 说明: 以安装路径“E:\Program Files\MATLAB\R2012b\”为例MATLAB外部支持文件夹: E:\Program Files\MATLAB\R2012b\extern matlab自带的c例程: E:\Program Files\MATLAB\R2012b\extern\examples\eng_matengine.h的位置: E:\Program Files\MATLAB\R2012b\extern\include各种lib的位置: E:\Program Files\MATLAB\R2012b\extern\lib\win64\microsoft 在matlab帮助中输入“C language”即可找到有关MATLAB Engine的一个页面。
从这个页面开始,学习各种关键词, 就能够找到一切你需要的资料。使用MATLAB Engine一般用两套函数就可以了。 1.engXXXX,关于Engine本身的操作,包括打开/关闭,设置/取得变量,执行语句等等。 2.mxXXXX,关于数据类型mxArray的操作,与MATLAB 交互的左右类型全部为mxArray。搭建过程:1.先在VC6的tools->options->directories里添加相关目录include files: E:\Program Files\MATLAB\R2012b\extern\include E:\Program Files\MATLAB\R2012b\extern\include\win64library files: E:\Program Files\MATLAB\R2012b\extern\lib\win64\microsoft2 点击LInker input 将libmx.lib;libmex.lib;libeng.lib;加入到Additional Dependencies
一、程序调试的必要性 程序设计过程中,错误是在所难免的。虽然有些程序员认为一个程序可以做到完美无瑕,但实际情况却并非如此,不然就不会有人对Windows怨气冲天了。尽管信息学竞赛中所编的程序从来不会像Windows那样庞大,最多也是仅仅几百K而已,但由于时间有限,选手们的程序难免有疏漏之处。因此,调试就成了极其重要的一环。如何在紧迫的时间内快速准确地发现并改正错误,正是本文所要讨论的问题。 二、常见错误类型归纳 《孙子兵法》云:“知己知彼,百战不殆。”对于程序调试者来说,程序中的错误就好比是敌人,如能准确把握敌人的情况,无疑是极为有利的。下面我们就来对常见的一些错误类型进行归纳并给出解决方法。 1、思路错误 这要看是基本算法错误还是功能缺陷。前者需要重写大部分代码,是否重写则根据时间是否充裕而定,后者只需增加一部分代码,再修改某些地方,这时应全面考虑,以防遗漏应该修改的地方。 2、语法错误 这个没什么可说的,作为一名信息学竞赛的选手,应该对自己选择的编程语言的语法了如指掌,具体在这里就不多讲了。 3、书写错误 这种错误令人十分头痛,一般的书写错误在编译时都能找出来,但如
果你在表达式中用到变量j时误写成了i,不但编译程序找不出来,自己找时也由于两者样子比较相似,难以发现。排除这种错误只能靠“细心”两字,具体可使用下面要介绍的静态查错法。 4、输出格式错误 由于现在信息学竞赛采用黑箱测试法,由于输出格式错误而导致失分的例子屡见不鲜。一个标点,一个空格,都会导致最后的悔恨。因此,在调试时先要核对输出格式,针对不同输出格式多设计几个测试用例,以防一失足成千古恨。 5、其它编程时易犯的错误 除了上面所说的错误类型外,其它就属于编程时在细节上考虑不周所造成的了。下面仅列举其中一些较为隐蔽的错误。只有靠平时不断总结积累,才能真正的做到“知己知彼”。 ①变量未赋初值 看下面的程序段 For i:=1 to N Do If A>Max Then Max:=A; WriteLn(Max); 这个程序段的原意显然是要输出数组A中最大的数。但由于它遗漏了将Max赋初值的语句,因此很可能会出现输出的数并不在数组A中的错误。应该在过程开头添上一句Max:=-MaxInt;。养成变量使用前先赋初值的习惯能预防许多较隐蔽的错误。 ②中间运算越界
程序调试(除错)过程中的一些雕虫小技(一、前言) 调试程序,是软件开发过程中的一个必不可少的环节。这篇帖子,匠人试着来整理一下一些调试的技巧。 说到“技巧”,这个词自从被所长批臭之后,匠人就吓得不敢再提,生怕一不小心就暴露了思想的浅薄和眼光的局限,呵呵。所以咱们不叫“技巧”,干脆低调点,就叫“雕虫小技”吧。 这里所讨论的“调试”技巧,有些是必须结合开发工具本身的功能来实现,而有些可以通过烧录芯片来验证。 各种开发工具,提供的功能多少强弱也不尽相同,这些方法也未必都能套用。仅供参考吧。 最后说明一下,这是没有草稿的帖子,匠人仍然以不定期连载的方式,边写边发边改。可能结构会比较混乱。欢迎大家一起参与讨论。 程序调试(除错)过程中的一些雕虫小技(二、磨刀不误砍柴功) 在调试之前,需要掌握以下一些基本功: 1、熟悉当前的开发(调试)环境,比如:设置断点、单步运行、全速运行、终止运行,查看RAM、查看堆栈、查看IO口状态……总之,要熟练掌握基本操作的方法,并深刻了解其中意义。 2、了解芯片本身的资源和特性。
3、了解一点汇编语言的知识。(本来匠人是准备写“精通”的,但考虑到现状,还是“放低”这方面的要求罢了)。 4、掌握基本的电路知识和排错能力。(软件调试有时也会牵涉到硬件原因。总不能连三极管的好坏都不能识别吧?) 5、万用表、示波器、信号发生器……这些工具总该会用吧? 6、搜索、鉴别资料的能力。(内事问百度、外事问古狗、有事没事上21ic网) 7、与人沟通,描述问题的能力。(调试36计的最后一计——就是向他人讨教。当然,你得把话说明白才行) 差不多了,如果上述7把砍柴刀磨好了,就可以开始调试了。接下来,请调入你的程序…… ——什么?你说你程序还没写? ——匠人倒塌…… 程序调试(除错)过程中的一些雕虫小技(三、优先调试人机界面)面对程序中的一大堆模块,无从下手是吗?好吧,匠人告诉你,先调显示模块,然后是键盘。 为什么要先调显示模块?道理很简单,我们说“眼睛是心灵的窗户”,同样,“显示是程序的窗户”。一旦把显示模块调试好了,就可以通
设置断点:在如下图中的红色圆点处设置断点,红色圆点表示已经在这行设置断点。快捷键F9。 启动调试:按F5或者点击左边红框中的按钮。右边框是开始执行(不调试)Ctrl+F5。 调试工具栏:下面是工具栏中对应的名称和快捷键。 在调试过程中F5是执行到下一个断点。F11是逐语句,在执行到下图中的断点时,按F11会执行到Fibonacci方法里面逐步记录执行过程。F10是逐过程,与逐语句不同的是,在执行到下图中断点时,再执行会执行断点下面的语句,而不是去执行语句中的方法。 局部变量:在调试过程中可以查看局部变量窗口,如下图里面会有变量的当前状态。如果找不到的话在
数组的状态表示如下图: InteliTrace记录每一步的调试状态。
条件中断 开发人员设置断点,运行程序,利用不同的输入触发断点,然后在断点处手工检查是否满足某些特定的条件,从而决定是否继续调查。如果当前场景不是他们想要的,按F5继续运行程序,尝试别的输入,手动重复刚才的过程。 针对上述情况,Visual Studio提供了一个方便得多的功能——“条件中断”。只有当程序满足了开发人员预设的条件后,条件断点才会被触发,调试器中断。这将避免频繁地手工检查/恢复程序运行,大量减少调试过程中的手工和烦琐工作。 如何设置条件断点: 设置条件断点非常容易。在特定的行上,按F9设置断点。
然后右击断点–编辑窗口左侧的红点,在上下文菜单上选择“条件”。 这时弹出一个对话框供你设置激活该断点所需的条件。比如:我们希望只有当x==5时,调试才中断。我们可以写出如下的表达式: 现在我再运行这个程序按F5达到条件断点,只有当x等于5时,程序运行才会被中断。对于其它条件下的x值,断点将被跳过。 记录到达断点次数 有时你希望,只有当第N次满足条件的运行到达断点时,才中断程序运行。例如:当第一次命中断点。可以通过右击断点,然后在弹出菜单上选择“命中次数”菜单命令实现。 这时系统弹出一个对话框,它允许你指定:(1)当满足条件,而且进入断点的累计次数等于N时,断点命中一次。(2)当满足条件,而且进入断点的累计次数是N的倍数时,断点命中一次。(3)当满足条件,而且进入断点的累计次数大于N时,每次命中断点。
3.2 程序调试的方法 浅色飞翔 一、教材分析 本节内容是广教版信息技术选修一《算法与程序设计》第三章第二节程序调试的方法。程序的调试贯穿了程序设计与实现的整个过程中,要在以后的章节中学会利用VB进行编程,必须从掌握程序的错误类型和调试方法开始,先学会程序的调试,然后将程序调试的技能贯穿于以后编程的各个章节中,不断地潜移默化,使学生养成良好的编程习惯,从点点滴滴开始积累程序调试方法和技巧。这对于提高学生自身的编程修养是大有裨益的。 二、学情分析 本节课是在高二年级实施。高二年级的学生逻辑思维能力较强,具备了初步程序设计、代码分析的能力;在学习本节内容之前,学生已完成本模块中VB程序设计语言基础知识的学习,能编写一些简单的程序。学生对利用编程解决问题兴趣较高。但是,个别学生在小组协作学习时依赖性较强,另外,对选择适当的语句编写程序还要进一步的学习。 三、教学目标 1、知识与技能 1)掌握程序调试的意义 2)体验程序错误的类型,并分析其原因 3)体验程序调试与排错的基本方法 2、过程与方法 通过调试不同的例程,掌握程序错误的四种类型和原因及程序调试与排错的方法,认识程序调试的重要性。 3、情感态度与价值观 1)关注程序调试和排错的方法,并在程序设计中自觉加以运用。 2)培养调试程序的技巧、耐心和毅力,树立运用计算机解决问题的思想。 四、教学重、难点 重点:程序错误的四种类型,掌握调试与排错的方法。
难点:程序的调试与排错及其技巧。 五、课时安排 1课时 六、教学方法讲解法任务驱动自主探究 七、教学过程
八、板书设计 九、教学反思 本节课是广教版信息技术选修一《算法与程序设计》第三章第二节的内容,主要讲解了两方面的内容:程序错误的类型、程序调试与排错的方法。通过教学过程中存在的问题以及评课老师给予的建议,我总结了以下几点需要改进的地方: 1、设计的三个活动环节,其中第一个活动没按预想的引起学生极大的兴趣, 其余两个活动,大部分学生完成的还可以。因此,在课前引入方面有待提高。 2、教学过程中,出现了语言表达不流畅的问题,主要表现为口头语“那么” 出现的次数太多,同时,在讲解错误类型的概念时,语言不够顺畅。 3、整堂课氛围不是很活跃,课堂调控上把握的还不到位,课堂调控能力有 待提高。 4、教学目标基本完成,最后学生的情感态度价值观方面还未达到预期效果。 5、教师要给学生一碗水,最起码自己要有一桶水。从备课到讲课,深感在 专业水平上要继续努力,深钻深研,将内容吃透,才能给学生深入浅出的讲透。 通过此次录课,深感讲好一节课不是件容易的事情,需要有深厚的专业知识及教学能力,同时,还要具备良好的心理素质。 本次录课,特别感谢信息技术组各位指导老师和同事的悉心帮助,在他们的指导和帮助下,短短的时间内,我才得以完成录课,并且在授课方面取得了很大的进步。特此感谢!
汇编语言上机操作及程序调试的方法第一节在IBM-PC机上运行汇编源程序所必备的软件 为了在IBM-PC机上运行汇编源程序,机器上必须有DOS操作系统环境,DOS系统盘上应有下列文件: EDIT 文件编辑程序 MASM 宏汇编程序 LINK 链接程序 DEBUG 调试程序 第二节在IBM-PC机上运行汇编源程序的步骤 当用户编制好汇编语言源程序之后,要在机器上运行,必须经过以下几个步骤: 1.用EDIT命令建立与修改汇编源程序文件(ASM文件) 源程序就是用汇编语言的语句编写的程序,必须以ASM为附加文件名。2.用MASM命令汇编源文件以产生相应的目标文件(OBJ文件) 3.用LINK命令连接目标文件以产生可执行文件(EXE文件) 4.调试、运行可执行文件
上机过程示意图如下: 汇编语言程序 编辑程序 汇编程序 连接程序 调试程序 有错吗? 运行程序 Y N 图2-1 汇编语言程序上机过程流程 第三节 DEBUG 程序调用及汇编语言程序调试方法 调试程序DEBUG 是DOS 支持的又一种系统软件,主要用于汇编语言程序的调试。汇编和连接过程只能查出源程序的语法错误,不能查出功能上的错误和程序不完善的地方。 一、DEBUG 程序的启动 DEBUG 程序有两种启动方法。 第一种启动方法:只要打入DEBUG 和回车键,就可以把它装入内存。但是这样启动只把DEBUG 程序本身装入内存并进入等待DEBUG 命令状态,还没有把要调试的程序装入内存。 第二种启动DEBUG 的程序的方法是一次相继装入DEBUG 程序和要调试的程序。打入的命令格式如下: DEBUG[d :][path]filename[.ext][parml]Lparm2] 其中的Filename 是要调试程序的文件名,可选项[d:][path]和[.ext]分别是要调试程序的所在盘符、路径和扩展名。可选项[parml]和[parm2]是DEBUG 程序为要调试程序准备的参数(一般不用)。 例 进入DEBUG 程序并装入要调试程序,要调试程序在A 驱动器中。其操