codeblocks怎么设置断点和单步执行

codeblocks怎么设置断点和单步执行,第1张

codeblocks设置断点和单步调试方法:

主要是建一个project;

而且project要放在英文目录下面;

程序项目的目录里不能有中文;

new project->console application->选择c or c++ ->filename->有个debug要钩上->写程序

编译后使光标定位在程序某处,按F4使程序运行到光标处,再按F7就可以单步调试,按Shift+F7单步进入。

     

这种方式的话只能通过多线程来解决。

原因是如果你直接把当前程序直接停住,其实你是把当前程序的 UI 线程(主线程)给暂停了。也就是说程序根本就不会响应用户 *** 作,按钮单击也就自然不会响应了。

那么,为了能够使得新的线程被暂停后,只有在主线程按下按钮线程才会继续。我们得用 ManualResetEvent 类来解决这个方法。具体的还是看代码吧:

using SystemThreading;

ManualResetEvent mre = new ManualResetEvent(true);

Thread newThread = new Thread(() => {

while()

{

for(int i = 0; i < 5; i++)

{

mreWaitOne(); // 阻止新线程,直到 mre 对象被按钮单击事件处理方法调用其 Set() 方法

}

}

});

private void button对象_Click(object sender, EventArgs e)

{

mreSet(); // 调用 ManualResetEvent 对象的 Set 方法以让新线程继续执行

}

ManualResetEvent 的作用就是允许线程直接互相发送信号,指示对方线程是否应该被暂停(阻止)一段时间,直到当前线程执行好自己的任务并允许另一线程继续执行。

比方说,我新建了一个线程,负责输出 2 这个数字。然而我希望这个线程能够在主线程开始输出 1 这个数字前就开始执行,但是 2 这个数字却出现在 1 之后。代码如下:

ManualResetEvent mre = new ManualResetEvent(true);

Thread newThread = new Thread(() => {

mreWaitOne(); // 调用了 mre 的 WaitOne 方法使当前线程(根据上下文判断是新线程)阻止,直到其它线程对 mre 对象调用了其 Set 方法

ConsoleWriteLine("来自新线程的:2");

});

newThreadStart();

ConsoleWriteLine("来自主线程的:1");

newThreadSet();

输出结果如下:

来自主线程的:1

来自新线程的:2

我就说一下该程序的功能:

在数据段BLOCK变量下存放了二十个数,占据二十个字单元;

把第一个数赋给AX寄存器然后和下一个数比较,如果AX中的数大,就再和下下一个数比较;如果AX中的数较小,就把大数装入AX再和下个数比较。累计比较十九次,最后AX中装的就是最大的那个数,将此数传递给MAX变量。

你可能刚开始学汇编觉得难,没关系,先搞懂CPU、存储器、I/O以及总线之间的关系,再记住几个常用的CPU寄存器,至于汇编程序大部分时间都是装(MOV)来装去的,多读一些程序就熟了。

祝你好运。

在这个函数中按F9设断点,按F5进入调试,然后再F10或F11单步调试。这里我对F10和F11作个分析吧 F10是单步调试命令,但不进入一个函数。 F11是调试时跟踪进入函数里的一个命令。当你要进入的这个函数是API函数时,因为有的API函数没有提供源代码,只提供了lib库,所以你要进入这个函数内部时,先会提醒你给出源代码的路径,你没有给出,所以就只能显示这个函数的汇编指令了(lib的反汇编)。 调试时F11只是给你需要进入自己写的函数时用到的命令,遇到API函数时就不要用F11了,用F10就可以了。

1、设置断点

在程序里面放置一个断点,也就是双击需要放置断点的程序左边的栏目上。

2、调试

(1)点击"打开透视图"按钮,选择调试透视图,则打开调试透视图界面,然后先设置断点,按调试按钮则可以调试程序。

(2)或者直接点击调试按钮,那个虫子样子的按钮,然后就会进入调试透视图的界面。前提你需要是要在程序中设置好断点。

(3)或者右键单击该程序,选择debug as(调试方式) -> java application(Java应用程序),则可以调试程序了。前提需要是要在程序中设置好断点。

3、调试快捷键

以debug方式运行java程序后

(F5)单步执行程序,遇到方法时进入;

(F6)单步执行程序,遇到方法时跳过;

(F7)单步执行程序,从当前方法跳出;

(F8)直接执行程序。遇到断点时暂停;

按F5就是一层层深入的debug相当于剥葱样,会进入每个方法内部;

按F6就是在当前函数一步步debug,不理会深层次运作;

按F7就是如果当前进入了某个方法内部,都跳转到该方法的结尾代码处;

按F8就是如果后面还有断点,则运行到下一断点处,否则运行完程序;

另,在debug时,会有很多有用信息显示在debug框里,如堆栈信息,需要自己实践;在程序界面里,鼠标移到变量上时会有当前变量的属性值。

4、改变变量的值

在变量窗口中右击变量,在d出的菜单中选择[change value],d出修改画面。

改变其值后,按下ok按钮;这时变量的值就改为修改后的值了。

5、检查代码段执行结果

在程序运行的时候,想看看某段程序运行的结果是否正确,或者查看某个变量的值时:

选择一句或一段代码,右键单击在d出的菜单中选择Watch(创建查看表达式)项,此时,代码的执行结果将显示在Expressions(表达式)窗口中。

选择一句或一段代码,右键单击在d出的菜单中选择Inspect(检查)项,可以直接显示表达式的值。

1、写一个有bug的简单程序。

2、运行程序,产生错误,然后进行debug调试。可以按照图示进入调试,也可以直接按快捷键F10。

3、首先凭借直觉,设置断点。

4、观察变量值的变化,是否在要求的范围内,或者运行时程序是否产生内存溢出;最终发现在a=1出产生错误,改正后,再运行。

5、修改程序后重新编译,若无错误,即完成,若有错误,继续进行第三步和第四步,直至错误消除或者产生正确结果为止。

以上就是关于codeblocks怎么设置断点和单步执行全部的内容,包括:codeblocks怎么设置断点和单步执行、C#中,如何实现“单步执行”的按纽、给下面的汇编语言源程序加注释,分析程序的功能,画出程序流程图。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10176343.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存