使用DEV C++调试代码

使用DEV C++调试代码

0.序言

本片博客旨在记录通过DEV C++工具调试C/C++代码,在这之前需要对以下知识了解或掌握。

1.开发工具配置

我所使用的DEV C++版本为5.11,默认设置就已经支持调试了,看其他博客经常会提到默认设置无法调试,可能是使用的旧版本4.xx。这里记录一下他们修改默认设置为可调试的步骤

  • 添加std标准库版本设置

    工具》编译选项》编译器》编译时加入以下命令:

    -g3

  • 打开调试信息

    还是这个窗口,打开代码生成/优化选项卡》连接器》

    修改产生调试信息为Yes

经过测试,上述配置会在编译过程添加这些选项

# 预处理->生成xxx.i文件->编译->生成xxx.s文件->汇编->生成xxx.o文件
#
g++.exe -D__DEBUG__ -c main.cpp -o main.o -I"D:/software/Dev-Cpp/MinGW64/include" -I"D:/software/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"D:/software/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include" -I"D:/software/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++" -g3 -std=c++11

# 链接
g++.exe -D__DEBUG__ main.o -o "hello world.exe" -L"D:/software/Dev-Cpp/MinGW64/lib" -L"D:/software/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib" -static-libgcc -g3

更多完整的选项可以参考官网的文档说明

2.调试所需源代码

#include <iostream>
using namespace std;

int add (int a , int b){
    return a+b;
}

int main(int argc, char** argv) {
    int a = 1+1;
    cout << "hello world!";
    int b = 1+2;
    int c = add(a,b);
    int d = 1+3;
    int e = 1+3;
    return 0;
}

代码内容很简单,这里就不展开解释。

3.调试过程详解

可以去菜单栏运行下面的子菜单,了解一下每一个菜单的作用

你也可以通过工具栏的图标来实现同样的效果。

点击全部重新编译(快捷键F12),可以看到编译日志记录如下:

重新生成整个项目...
--------
- 项目文件名: D:\otherworkspace\devcppworkspace\hello world\hello world.dev
- 编译器名: TDM-GCC 4.9.2 64-bit Debug

生成 makefile...
--------
- 文件名: D:\otherworkspace\devcppworkspace\hello world\Makefile.win

正在处理makefile...
--------
- makefile处理器: D:\software\Dev-Cpp\MinGW64\bin\mingw32-make.exe
- 命令: mingw32-make.exe -f "D:\otherworkspace\devcppworkspace\hello world\Makefile.win" clean all

rm.exe -f main.o "hello world.exe"

g++.exe -D__DEBUG__ -c main.cpp -o main.o -I"D:/software/Dev-Cpp/MinGW64/include" -I"D:/software/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"D:/software/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include" -I"D:/software/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++" -g3

g++.exe -D__DEBUG__ main.o -o "hello world.exe" -L"D:/software/Dev-Cpp/MinGW64/lib" -L"D:/software/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib" -static-libgcc -g3

g++.exe -D__DEBUG__ main.o -o "hello world.exe" -L"D:/software/Dev-Cpp/MinGW64/lib" -L"D:/software/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib" -static-libgcc -g3

编译结果...
--------
- 错误: 0
- 警告: 0
- 输出文件名: D:\otherworkspace\devcppworkspace\hello world\hello world.exe
- 输出大小: 1.88690853118896 MiB
- 编译时间: 2.42s

开始调试代码:

添加以下断点

点击开始调试按钮之后,可以看到当前运行行背景颜色为蓝色。

调试相关窗口说明如下图。

最常见的按钮就是调试,单步进入和停止执行

原文地址:https://www.cnblogs.com/ericling/p/11737276.html

时间: 2024-10-22 11:17:27

使用DEV C++调试代码的相关文章

Eclipse debug断点调试代码时出现source not found问题

偶尔调试代码的时候会出现这种事情,之前并没有特别注意,今天稍微搜集一下相关资料: 1.跳转到的代码的确没有源码,下载源码后选择源码位置后便会正常显示源码. 2.源码和class文件不一致.即便勾选了auto build选项,eclipse依然存在class没有实时编译的情况,致使我们当前的代码和编译的class文件不统一,导致debug断点时定位源码失败.此时只要重新build或是重新clean package一下就好了.

ios 使用xcode调试代码的时候进入断点显示变量全是nil,但NSLog输出那个变量却是有值的

解决办法:把1删掉 2选择debug模式 ios 使用xcode调试代码的时候进入断点显示变量全是nil,但NSLog输出那个变量却是有值的,布布扣,bubuko.com

myeclipse调试代码的时候看不到变量的值和jdk源码重新编译

Q:myeclipse调试代码的时候看不到变量的值? A: 调试的类的Class文件里没有包含LocalVariableTable属性表, 这是因为在编译时,编译者为了减少文件大小而不把属性表的信息放在Class文件中. 使用命令为javac -g>http://hllvm.group.iteye.com/group/topic/25798--解决方法:需要重新编译一份用于debug版的. Q:重新编译jdk源码,启用debug信息 >http://www.cnblogs.com/thecat

分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容

分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容 在写JS的过程中,为了调试我们常常会 写很多 console.log.console.info.console.group.console.warn.console.error代码来查看JS 的运行情况,但发布时又因为IE不支持console,又要去掉这些代码,一不小心就会出错 问题的产生 在写JS的过程中,为了调试我们常常会写很多 console.log.console.info.console.group.console.

axis客户端调试代码

axis客户端调试代码: package com.hcj.axis2; import java.rmi.RemoteException; import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; import javax.xml.rpc.ServiceException; import org.apache.axis.client.Call; import org.apache.axis.client.Servic

iOS Dev (50)用代码实现图片加圆角

用代码实现图片加圆角: iconView.layer.masksToBounds = YES; iconView.layer.cornerRadius = 3; iOS Dev (50)用代码实现图片加圆角

Keil MDK使用J-LINK分别在Sram,Nor Flash以及Sdram中调试代码的原理和方法

一.概述 MDK开发ARM裸机程序时,在调试阶段通常是先让程序在SDRAM中执行,以加快调试速度,也避免频繁烧写Nor Flash,因此需要知道如何指定程序在哪个位置执行.本文以realarm 2410开发板为例,进行描述.该开发板使用S3C2410A做为CPU,有2MB的 Nor Flash,以及64MB的SDRAM,4KB的SRAM.程序可直接在Nor Flash中调试和运行,如果代码小于4KB,也可以直接在SRAM中运行,然而在SDRAM 中运行,就需要事先用脚本初始化SDRAM,才能把程

xdebug调试代码常用操作

xdebug调试代码常用操作 1.查看变量中的值 2.常用快捷键 ①F8单步调试 ②F9可以直接快速结束调试 ③F7 可以进入调试代码的底层方法,我觉得查看底层代码时,这个特别的方便! 原文地址:https://www.cnblogs.com/honeyJYY/p/9310258.html

@Java web程序员,在保留现场,服务不重启的情况下,执行我们的调试代码(JSP 方式)

一.前言 类加载器实战系列的第六篇(悄悄跟你说,这篇比较水),前面5篇在这里: 实战分析Tomcat的类加载器结构(使用Eclipse MAT验证) 还是Tomcat,关于类加载器的趣味实验 了不得,我可能发现了Jar 包冲突的秘密 重写类加载器,实现简单的热替换 @Java Web 程序员,我们一起给程序开个后门吧:让你在保留现场,服务不重启的情况下,执行我们的调试代码 最近事不算多,所以有点时间写博客,昨天写着写着,测试的同学反馈说有一个bug.我看了下服务端日志,空指针了: 下面会给出详细