方法/步骤
1
在visual studio “调试”>>“启用调试”,就可以开始调试程序,或者使用快捷键F5。调试会从程序的头部开始执行,如:main函数,网页中的Page_Load。
2
还可以打断点进行调试,在你希望程序走到哪一步中断的位置打上断点,如下图所示。之后执行调试,如果该断点是在事件响应中的,那该事件发生时,程序会在该断点处中断。(断点处的程序在中断时不会执行)
3
处于中断模式时,把鼠标移动到变量或者对象上,可以看到它的值或者它属性的值。
当程序中断后可以按F11逐语句执行程序(逐语句执行时遇到调用或属性的情况,将会进入调用的方法或者属性进行逐行执行)。
当程序中断后可以按F10逐过程执行程序(逐语句执行时遇到调用或属性的情况,将不会进入调用的方法或者属性进行逐行执行,整个方法会一步执行,只给出结果,不会显示调用方法执行的具体细节)。
当按F11进入一个方法执行时按Shift + F11可跳出该方法,返回原调用该方法的语句处执行下一条语句。
F5,恢复程序的继续运行,除非遇到另一个断点。
单片机可以实现在线调试程序,通过软件设置断点,进行单步调试,这样可以看到单片机是如何一步步执行程序的,从而快速找到问题,解决问题。以Keil和IAR为例介绍一下单片机的在线调试。
1keil
的在线调试功能
以STM32单片机为例,所需要的软件为Keil MDK,仿真工具为J-link,当程序编写完成后,编译通过,通过J-link仿真工具连接电脑和单片机板子,一定要安装好J-link的驱动,在Debug界面选择J-Link,并正确设置Setting界面的下的器件型号,如下图所示。
设置好后,点击工具栏的Debug按钮,就进入在线调试模式了,这时候会出现调试工具栏,如下图所示。
在怀疑有问题的地方设置断点后,运行单步调试,单片机就可以一步步的执行了,在watch窗口可以选择查看单片机的GPIO等寄存器,实时了解各端口和变量的变化情况。
2IAR
的在线调试功能
以STM8单片机为例,以IAR for STM8为例,工具为ST-Link,正确安装好ST-Link的驱动,程序编译通过后,执行Debug and download按钮可以开启在线仿真模式,如下图所示。
在有问题的地方设置断点,执行全速运行后,会在断点处停下,可以执行单步调试功能进入函数,再一步步执行。
这样也可以很容易的找到程序bug。
3使用串口打印进行调试
如果单片机不支持在线仿真功能,可以通过串口打印的形式输出调试信息。首先要把串口打印程序调试通,在有问题的地方通过给变量设置不同的值然后打印,这样也可以很直观的判断程序的运行情况。所需要的工具为USB/TTL。
由于篇幅有限,无法详细描述,大家可以根据以上信息搜具体的教程。
以上就是这个问题的回答,感谢留言、评论、转发。
更多精彩内容请关注本头条号:玩转嵌入式。感谢大家。
简单来说,有两种方式,一种是源码debug,即分析源码来找出bug位置,一般使用printf()打印出程序执行每一步的信息,一种是可执行文件debug,需要使用调试器来进行。
1、源码debug
类似于下面的源码,主要通过程序执行时输出的信息,来定位bug出现的位置,然后再修改源码。
#include <stdioh>
void f() { ; }
int main()
{
#ifdef _DEBUG
printf("start main function!\n");
#endif
void f();
#ifdef _DEBUG
printf("leave main function !\n");
#endif
return 0;
}
2、可执行文件调试,windows平台常用的就是vs/vc自带的调试,另外一个就是微软自家开发的调试器windbg。Linux平台以gdb为常用。
IDE自带的调试器以VC60为例,编写完代码后,按快截键盘F11,即可进入调试,此时右键,选择“go to disassembly"即可查看到程序的反汇编代码 。一般这种情况,主要是为了对C语言进行反汇编学习。
Windbg的功能非常多,可以进行源码调试、可以调试可执行文件、还可以进行内核调试,也可以调试dump文件,用的多了,自然熟悉,要调试可执行文件,只需要点击”File"在d出的对话框中选择“Open Executeable",然后找到自己要调试的程序即可。
Linux常用的是Gdb调试器,值得注意的是,要使用gdb调试,在使用gcc或者g++编译C/c++文件时,需要添加-g参数才可以生成符号表。下图是用gdb分析C++中变量分布的一张截图,大体上看一下长什么样,用的多了自然熟悉,不需要可以去学习。
当我们编写大型c++程序时,每次调试程序可能需要很久才能运行到错误位置。所以,我们可以直接运行而不进行调试,当程序崩溃时选在系统调试器进行调试,则能快速找到错误位置。
Windows *** 作系统有一个默认调试器设置,使程序出现崩溃时,自动调用这个调试器进行调试。这个设置在windows的注册表中。
对于32位 *** 作系统:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/AeDebug/Debugger。
对于64位 *** 作系统:HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Microsoft/Windows NT/CurrentVersion/AeDebug/Debugger。
在这个注册表键中,有两个重要的值:
1、Auto值 : 0表示出现崩溃d出对话框,让用户选择调试器 1表示自动d出默认的调试器。
2、Debugger值,对于windows自带的DrWatson该值为“ DRWTSN32 -p %ld -e %ld -g”,对于 WinDBG该值为“WinDbg的安装目录\windbgexe" -p %ld -e %ld -g”对于Visual Studio该值为"C:\WINDOWS\system32\vsjitdebuggerexe" -p %ld -e %ld"
主要通过以下几个步骤:
1、手机通过数据线连接在电脑上
2、设置android手机为USB调试模式。步骤:menu—
3、如果是window系统,系统会提示安装驱动:
选择正确的androidsdk安装目录,然后点击下一步,系统就开始安装驱动了
4、驱动安装完成之后,重启电脑(通常系统会有“安装新驱动,重启才能生效”的提示),这但应该明白吧
5、重复第1步和第2步,打开命令窗口,检测手机设备是否已经被识别,如下所示:
“device”就是检测到得手机设备
6、接下来就开始在eclipse上调试android程序了,右击android工程-
7、选中手机设备,点击OK之后,程序就开始在真机上安装了,控制台输出如下信息:
[2011-04-0722:24:49-HelloWorld]UploadingHelloWorldapkontodevice‘′
[2011-04-0722:24:49-HelloWorld]InstallingHelloWorldapk
[2011-04-0722:24:53-HelloWorld]Suess!
[2011-04-0722:24:53-HelloWorld]Startingactivitycomeightqiuactivityondevice
[2011-04-0722:24:57-HelloWorld]:Starting:Intent{act=androidintentactionMAINcat=[androidintentcategoryLAUNCHER]cmp=comeightqiuactivity/}
8设置应用程序为调试模式。 *** 作:编辑xml增加调试参数android:debuggable="true",如下:
9执行真机调试 *** 作:ECLIPSE调试对话框中,Target窗口中选择Manual,点击debug按钮,选择真机设备,开始调试。
注:不管是否启用ECLIPSE环境,任何Android软件只要在真机上运行发生异常,都可以在命令行窗口下查看具体异常信息:
执行:/adblogcat可以查看到更多的系统异常消息。在这些消息中要注意查看Causedby:打头的行,这些行指明了在哪行代码出的错误
10、运行这个应用程序,这样就可以使用手机来测试了
将程序编译、连接,用Debug加载、跟踪。
在启动应用程序进行调试时,Eclipse 会自动切换到Debug透视图。最常见的调试步骤是设置断在点,这样可以检查条件语句或循环内的变量和值。要在Java透视图的视图中设置断点,双击选择的源代码文件,在一个编辑器中打开它。遍历代码,将鼠标放在可疑代码一行的标记栏(在编辑器区域的左侧)上,双击即可设置断点。
子程序概念
能被其他程序调用,在实现某种功能后能自动返回到调用程序去的程序。其最后一条指令一定是返回指令,故能保证重新返回到调用它的程序中去。也可调用其他子程序,甚至可自身调用在一个加工程序中,如果其中有些加工内容完全相同或相似,为了简化程序,可以把这些重复的程序段单独列出,并按一定的格式编写成子程序。主程序在执行过程中如果需要某一子程序,通过调用指令来调用该子程序,子程序执行完后又返回到主程序,继续执行后面的程序段。
以上就是关于visual studio 怎样调试程序全部的内容,包括:visual studio 怎样调试程序、单片机程序怎么在电脑上调试用什么软件好、C语言 怎么调试程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)