Dev c++程序不能调试为啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dev c++程序不能调试为啥?相关的知识,希望对你有一定的参考价值。

dev-c是个ide,它的编译器是mingw
一、使用单步调试和观察变量的步骤:
1.
编译通过(ctrl+f9)
2.
设置断点(ctrl+f5)
3.
调试(f8)
4.
增加观察变量(在左边的debug观察窗口右键增加或者f4)
5.
单步调试:f7
6.
结束调试:ctrl+alt+f2
简单来说,它有两种方式,一种是源码debug,即分析源码来找出bug位置,一般使用printf()打印出程序执行每一步的信息,一种是可执行文件debug,需要使用调试器来进行。
1.源码debug。类似于下面的源码,主要通过程序执行时输出的信息,来定位bug出现的位置,然后再修改源码。
例如:
#include
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为常用。
下面以dev-c++为例:
1)在“工具”-》编译选项-》"编译时加入以下命令"下面的编辑框里加上:
-g3
2)在下面的"在连接器命令行加入以下命令"
下的编辑框上加上:
-g3
3)转到程序页,把gcc行修改为:gcc.exe
-d__debug__,
4)把g++行修改为:
g++.exe
-d__debug__

5)点击确定,重新编译,就能调试了。
参考技术A 1)tools->compiler
option->settings->linker里设置为yes后,Generate
debugging
information,并且Rebuild
All
了。
(2)在“工具”-》编译选项-》"Add
following
commands
when
calling
complier编译时加入下面命令"的编辑框里加上:-g3,在下面的"Add
these
commands
to
the
linker
command
line在连接器命令行加入以下命令"
下的编辑框上加上:-g3
(3)转到programs程序页,把gcc行修改为:gcc.exe
-D__DEBUG__,把g++行修改为g++.exe
-D__DEBUG__
,点击ok。
(4)重新编译,就能调试了。
2、使用Dev—c++时,如何结决控制台程序运行时的控制台窗口只闪一下就自己关了的问题,解决方案有以下几种
(1)引入#include
<conio.h>,并在返回之前使用getch()。对于freopen()也使用。注:此处使用getchar()也不好使。s
(2)c++引入#include
<cstdlib>,返回之前添加system("PAUSE");但对于freopen()不适用。在c中引用<stdlib.h>.
参考技术B Dev
C++
5.11
调试初始设置
win10系统
当时初学c++,为dev不能调试头疼许久。后来不断找方法,发现更改两处即可,见下文
1.
文件>>新建>>项目>>,如图设置
2.左侧项目管理下,在“项目1“右键单击选择”项目属性“
3.进行如图设置
4.工具>>编译选项>>,进行下图设置
5.大功告成。无论是单个文件调试还是项目调试均可。本回答被提问者采纳

为啥我不能在没有安装Visual Studio的机器上运行调试版的.NET程序

【中文标题】为啥我不能在没有安装Visual Studio的机器上运行调试版的.NET程序【英文标题】:Why can't I run debug version of .NET program in the machine didn't install visual studio为什么我不能在没有安装Visual Studio的机器上运行调试版的.NET程序 【发布时间】:2012-02-15 04:24:29 【问题描述】:

我有一个 .NET 4.0 应用程序的调试版本,我在这台机器上安装了 .NET 4.0 Framework,但是我没有安装 Microsoft Visual Studio。

为什么我只能运行Release版本的应用,而不能运行debug版本的应用?

我猜应用程序的调试版本中的 dll 可能是指 Visual Studio 的某些 dll?有谁知道具体原因吗?

【问题讨论】:

您应该能够运行在调试模式下编译的程序集。当您尝试运行它时,究竟会发生什么? @DBM 它抛出一个 FileNotFoundException.Message 如下所示:未处理的异常:System.IO.FileNotFoundException:无法加载文件或汇编“xxxx.dll”或其依赖项之一。找不到指定的模块。 您安装的是完整框架还是客户端配置文件?如果您只安装了客户端配置文件,请尝试完整的框架。另外,错误中引用的是您的 DLL 还是框架 DLL? 是否依赖于非托管项目或DLL? @Tetsujin no Oni 我已经安装了完整的框架,包括 Client Profile 和 Extended 【参考方案1】:

调试版本专门用于调试您的程序。它包括一些额外的保护和挂钩,让您可以单步执行和测试您的程序。这些需要 Visual Studio 通常附带的特殊调试运行时。

发布版本去除了所有这些额外功能,因此您只需要运行 .NET 框架即可。

编辑:经过更多研究,看起来调试版本应该大致等同于发布版本。主要区别似乎是调试版本创建了一个 pdb 文件,其中包含调试器的额外查找信息,并且在优化方面可能不那么激进。

【讨论】:

在 Win32/C/C++ 上可能是这样,但在 .NET 上则不然。 条件语句可能会在编译时被删除,但您可以在存在框架的任何地方运行 .NET 程序集。

以上是关于Dev c++程序不能调试为啥?的主要内容,如果未能解决你的问题,请参考以下文章

Dev C++调试程序方法超详解,系统地学一下如何用 Dev C++ 调试程序

dev c++怎么在调试的时候把鼠标放上去就可以查看变量。

在 c++ 程序中调试链接列表以添加两个数字:有人可以解释为啥 l3=l3->next;导致错误?

Dev C++调试报错:无法启动此程序,因为计算机中丢失zlib1.dll

Dev C++调试报错:无法启动此程序,因为计算机中丢失zlib1.dll

Dev C++调试报错:无法启动此程序,因为计算机中丢失zlib1.dll