dev 调试

2023-05-16

问题集锦:
1.dev的代码自动补全功能(vs的智能提示功能)的快捷键
2 调试时,二维字符数组的样子
如图很是怪异:
在这里插入图片描述
3.这篇博文可以供以后出现问题后参考,其主要改变的是程序那个标签页
https://blog.csdn.net/coding_my_future/article/details/8766782

4.关于CCF的devc++环境,CCF的环境是在我的收藏里有,然而并不能调试,可能是因为我的电脑已经安装过dev了,


1.以前设置dev调试的记录。

以前设置后不知道哪里不合适 ,调试 中查看到的变量总是和真实的数据不一样,相差2,这次 终于对了,所以我把设置都截图了,供大家参考。概括的说就是设置产生调试信息,并且使用64bit debug 。在连接器命令行加入如下命令:
-static-libgcc
这里写图片描述

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

我用了很长的时间来探索到底该怎么正确的使用dev调试,得出的最终结论是用dev调试程序真的还不如自己检查代码。
理由如下:首先很多dev不能调试即使按照网上的很多说法,或者按照我的说法填上-g3 输出调试信息等等,但是这款dev还是不能调试,我最终还是找到了办法,那就是将dev的兼容性修改为winXp我的电脑是win7的,然后就可以调试了。但是你不要高兴太早,dev的调试非常鸡肋,只能查看单一的变量,如果查看vector 或者 string对象,调试就会卡住。用这个ide查看多维数组,甚至二维数组非常麻烦,实在是太艰难了。如果你说可以用gdb命令,那么你错了,我尝试在那个窗口输入gdb命令会报错,就算可以,输入gdb命令那也太麻烦了吧。我最终还是决定放弃这款ide 虽然我在上次的pat考试中由于失误,没有敲 using namespace std;导致出现重大失误,但是这个dev实在无可救药。
还有另外一个奇怪的现象,我用的freopen打开文件,用getline读文件,虽然第一次调试是正常的,但是在后来几次调试就无法正常读取数据,在cmd里面输入也没有用,不知道到底发生了啥。这个ide被它的公司放弃真的是有原因的,太难用,很不稳定。要是不熟练代码,需要调试真的不要用这个ide,否则这个ide会气死你。
但是仍然要多用dev,毕竟不是每个考场都有vs,所以我又写了以下内容供大家参考。

2.对dev新的拯救

1.调出函数的定义:在参数位置点击(这样做的好处是函数定义弹出后不会很快消失),等待,直到括号变红,就会自动弹出函数的定义。如图所示:
在这里插入图片描述
2 最简单的调试设置。
上面说的那个调试的设置实在是有点复杂了,记不住,现在我重新写了一个简单的,并且经过我实际检验过的设置。以下进行一些简要的概括。
dev调试设置实际上是根据每个编译器设置的,如图所示。dev有64-bit的编译器,debug选项,还有profile等。每个编译器对应一种编译器设置。许多人根据网上的设置后不能编译是因为这里没有选对。
在这里插入图片描述
下面针对,64-bit release这个编译器进行编译器设置。(根据我接下来的测试,这里选择64-bit debug 这个编译器可以进行同样编译器设置,一样可以调试,甚至效果更好)

1.把调试信息更改为产生调试信息。如图
在这里插入图片描述
具体路径如下:
工具 编译选项 代码生成优化 连接器
2.在编译器这个标签中添加-g选项,上下都添加。
如图:
在这里插入图片描述
3.其他选项的基本情况:

其他选项要么选择no,要么选择空。尤为注意选择空的选项,当你点开下拉框时,第一个选项就是空,这个时候空是可选择的。这里选择GNUc++就可以了,因为这里没有c++99这个选项。选择GNUC++应当就是c++99标准了。
在这里插入图片描述

4.注意程序这个标签,这个标签下的选项不需要更改,但是如果有所更改,那么可以按照下图改回来。
在这里插入图片描述
5 用dev调试提示unknown signal
解决方法:关闭调试,然后重新编译,重新调试
6 dev调试提示计算机缺少zlib1.dll
这种错误一般在考场上无法解决。
7 dev调试多维数组
dev显示的二维数组s,dev会用逗号将每一维的数据分割开来。可能是由于没有将数组s初始化,所以s的数值中有一些奇怪的任意值。
在这里插入图片描述
Dev调试时多维数组的显示是反的(这句话是啥意思) 最前面会有一个数字 往往是零,然后说零重复了多少次,等等。
8 dev调试vector
1 比如说有一个长度为3的vector v,如果想要查看v[0]的值,就在添加查看中写 (&v[0])
2 如果想要查看整个数组的值,就可以写
(&v[0])@3
3 @后面的数字表示想要查看的长度,这里vector的长度是3所以可以写3就能看到所有的值~
4 有时,调试器(Debugger)可能不知道某个指针的类型,从而不能显示该指针指向的变量的值。 此时,我们需要手动输入该指针的类型。按 F4 后,以 *(type *)pointer 形式输入。例如, *(int *)pointer。
9 dev调试指针类型
1 有时,调试器(Debugger)可能不知道某个指针的类型,从而不能显示该指针指向的变量的值。 此时,我们需要手动输入该指针的类型。按 F4 后,以 *(type *)pointer 形式输入。例如, *(int *)pointer。
9 代码补全功能的替代方案
只要能记住某个库函数在那个头文件中,然后就可以去这个头文件中去找。

3 CCF dev环境在自己电脑上的安装和编译器配置。

一 安装
安装过程比较熟练了,我就不说了,这个软件是绿色软件,在首次打开的时候,还提示我是否需要缓存头文件,应该选择不需要缓存任何头文件,即第三个选项。不缓存实际上不影响任何东西,只是如果需要代码补全功能就需要缓存头文件了。不过代码补全功能可能没有啥用处。
二 编译器配置
这个dev是绿色文件,可以编译,但是却不能够调试程序。报错提示系统找不到该文件,显示的是dev的存放路径和系统的path变量。
解决办法:这种问题一般都是由于编译配置不正确造成的,解决办法:先删除原来的编译配置,然后添加自动编译配置。如图所示:
在这里插入图片描述
第一个按钮是添加自动编译配置(这个按钮的自动配置功能能够自己找到gdb gcc所在目录,然后完成配置,十分强大,比自己手动去找路径,然后配置要强大很多),第三个按钮是删除原来的编译配置。CCF提供的问题解决文档也建议出现配置问题首先删除原来配置,然后添加自动编译配置。如图:
在这里插入图片描述
所以可以说出现的很多编译或者调试上的问题都可以用这个办法解决。
三 其他问题
没想到设置好编译器后又出现了一系列奇奇怪怪的问题。
1 设置断点后调试时无法停在断点处。
如果设置好编译配置和打好断点后,调试时却无法停留在断点处。解决办法是重新启动dev,然后再试。不行就再配置一次编译器,然后再重启,应该就能好了。
2 设置断点后调试时只能停留在部分断点处,并且不能逐步调试。
这个问题真的是太怪了,没办法啊 dev就是这么怪异。我调试的是如下代码,没想到dev只在while处停留一下,然后点下一步,就跳到程序结尾了。
在这里插入图片描述
解决方法:我原本分析是编译没能覆盖原来的编译好的.exe文件,所以我删除了编译好的.exe文件,然后重新编译,调试,还是不行。我又尝试了另外一个办法:新建一个文件,然后把代码拷贝上去,然后改while中的scanf为1,然后调试时会报错,然后我又改了回来,然后打好断点,重新编译调试。这个办法起作用了,然后奇怪的是原来的代码居然也可以正常调试了,真是奇怪的dev啊,我都受不了了。我都搞不清楚到底是我把while中的scanf改成1起作用了,还是新建了一个文件,然后重新编译起作用了。我很迷??????
然后我打开另外一个也有这种问题的绿色版dev ,测试了下,还是新建一个文件,然后重新编译,打断点,调试更能起作用。
这种奇怪的现象有可能也是由于没有适当的初始化化变量造成,或者程序的scanf printf处的格式,freopen处的文件名字不合适等等。freopen处的文件名字中最好不要含特殊符号吧,就用英文名字就行了。
3 代码格式化
1. 很多考场的dev上没有安装代码格式化插件,如果安装了,那这个格式化按钮要么在最上面那行,叫做Astyle 或者类似的名字。如图
在这里插入图片描述
或者在工具里最下面那个选项。
快捷键一般为ctrl + shift + a
2 如果考场上的dev没有安装代码格式化插件,那么只能靠一些技巧了。如下:
1. 使用dev的插入代码段功能时(这时的插入和粘贴实际上差不多)先把光标停留在要插入行的绝对行首,不要在插入之前将光标停留在代码格式化后的位置。 然后将插入的代码块选中,然后使用tab键 调整这段代码块的整体位置。
2. 使用复制再粘贴功能时,再选中要复制的代码块时一定要注意,就是要将光标从要复制的代码块的首行的绝对行首开始移动而不是相对行首,如图
在这里插入图片描述正确的方式
在这里插入图片描述错误的方式
复制完成后然后进行粘贴,粘贴的注意事项和操作和上面第一点插入时一样的

4 . 调整语言和字体
语言的调整在工具中的环境选项,而字体的调整在工具中的编辑器选项中。

5 快速换行快捷键
实际上这个也算不上个快捷键,只是快速连续按下连个键,先用中指按下end 再用二拇指按下enter 。不过由于考场上是键盘,这两个键的距离实际上还挺远的。
6 删除空行,
如果只有一行空行,在dev中没有shift+delete这个快捷键,只能先把光标移动到绝对行首,然后按下backspace,而不是delete 。这样才能保证原来的代码格式不变形。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dev 调试 的相关文章

随机推荐

  • RoboMaster机甲大师——视觉组——计算平台的选型与感想(主流几款)

    RoboMaster机甲大师 视觉组 计算平台 xff08 工控机 xff09 的选型与感想 xff08 主流几款 xff09 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介 xff1
  • 如何在Linux命令行下发送和接收UDP数据包

    众所周知 在传输层有两个常用的协议 TCP 和 UDP 本文介绍在 Linux 命令行下 如何使用 nc 命令发送或接收 UDP 数据包 这些命令的用法对调试 UDP 通信程序将有所帮助 1 问题的提出 编写了一个使用 raw socket
  • 抽丝剥茧聊Kotlin协程之聊聊Job和SupervisorJob的区别

    1 前言 随着协程的普及 xff0c 协程知识越来越被面试官青睐 首先 xff0c 协程的面试题一般都很简洁 xff0c 一两句简单的话就能把问题描述清楚 xff0c 其次于面试官而言 xff0c 协程框架中精妙的数据结构与算法可以很好的考
  • Android 手机运行 JoyCon Droid 并且使用 Amiibo

    PS 整个过程耗时耗力 xff0c 经常会断开连接 xff0c 有些不想搞那么麻烦的人就不要搞了 xff0c 以免遭受刺激啊 xff0c 哈哈 前提 如果想使用并刷Amiibo xff0c 必须同时满足以下几个条件 xff1a 1 蓝牙版本
  • STM32F10X系列通用OTA bootloader移植与使用指南

    基于STM32F10X系列通用OTA bootloader原理 移植与使用全指南 写在前面这几天我都做了什么呢 xff1f 有什么感受 xff1f 开始移植 写在前面 从2020 1 26到2020 1 30这5天 xff0c 我的较多研究
  • FreeRTOS笔记——链表数据结构

    FreeRTOS链表实现 0 概述1 关键结构体1 1 链表基础知识1 2 链表数据结构1 3 链表操作 0 概述 部分内容参考野火的FreeRTOS相关开发资料 xff0c 在此做一个学习记录总结 1 关键结构体 FreeRTOS源码实现
  • pyqt5 状态栏(statusBar)永久显示

    在主界面加了一个状态栏 xff0c 作为简易操作说明 xff0c 但是点击菜单栏时 xff0c 不管是否选中菜单栏下的选项 xff0c 状态栏都会消失 网上给了很多关于永久显示状态栏的方法 xff1a self status 61 self
  • 树莓派4B部署Intel Realsense T265相机

    硬件 xff1a 树莓派4B 8G内存 系统 xff1a Ubuntu 20 最初我是参照这篇博客树莓派上部署英特尔深度相机IntelRealsense T265 xff08 他人8月7日刚写的 xff09 我树莓派上librealsens
  • Phpstorm2018 永久激活

    原文地址 1 安装phpstorm xff0c 安装包请自行官网下载 http www jetbrains com phpstorm download 2 下载JetbrainsCrack jar文件 xff0c 存放至你的phpstorm
  • VMware + fedora25下安装QT5.8

    失业了 xff0c 搞单片机太久忘了这个linux xff0c 但为了重新找工作没办法重新学习 xff0c xff1a xff08 这几天手提上安装VMware和Fedora25 xff0c 把QT5 8安装了 xff0c 过程曲折 xff
  • Reproducible Research in Computational Science

    Reproducible Research in Computational Science http www csee wvu edu xinl source html It doesn 39 t matter how beautiful
  • 无人机学习所遇问题动态记录

    问题一 QGC显示 xff1a Detected 0 radio channels To operate PX4 you need at least 5 channels 原因 xff1a RC插错位置 解决方案 xff1a SBUS对应的
  • 四轮全向轮是不是比麦轮的控制难度大?

    经过一番搜索 xff0c 就发现一个做四轮全向小车的大佬 xff0c 其他都是四轮麦轮 xff0c 做四轮小车是麦轮比较好 xff1f 优点有哪些呢 xff1f
  • NoValidHost: No valid host was found. : NoValidHost_Remote: No valid host was found.

    openstack的queens版本创建实例的时候实例状态ERROE 查看日志以下错误 2019 12 10 11 32 25 436 4805 WARNING nova scheduler utils req d3743b51 2f00
  • 解决Windows下Pixhawk(PX4)编译提示没有cmake的问题

    多谢楼下的提示 xff0c 原来是64位系统下环境变量中包含 xff08 x86 xff09 的问题 xff0c 所以下面的解决方法也是错的 xff0c 看看就好了 以前安装cmake的时候还会注意一下安装选项 xff0c 后来就潜意识认为
  • 嵌入式linux串口通信自发自收测试程序

    串口自收自发程序主函数 include 34 uart api h 34 int main int fd char buff BUFFER SIZE char buff2 61 34 Hello NUAA2440 n 34 int nrea
  • js删除对象的属性及封装方法

    javascript中可以通过delete删除对象的属性 xff1a 使用方法如下 xff1a span class hljs keyword style font family none border 0px background tra
  • XML 转sql

    XML 转 sql 思路一 用字符匹配 找到的例子 xff1a https github com hhyo mybatis mapper2sql https github com inanutshellus mybatis xml inte
  • 【无标题】

    学习目标 xff1a 分布式事务 学习内容 xff1a 1 CAP BASE 基本内容和实现 2 TCC SAGA 消息一致性 实现的最终一致性 3 CMQ https cloud tencent com developer article
  • dev 调试

    问题集锦 xff1a 1 dev的代码自动补全功能 xff08 vs的智能提示功能 xff09 的快捷键 2 调试时 xff0c 二维字符数组的样子 如图很是怪异 xff1a 3 这篇博文可以供以后出现问题后参考 xff0c 其主要改变的是