C语言拯救者 番外篇 (Windows实用调试技巧)
来源:http://www.tudoupe.com时间:2022-03-28
说明: Linux 开发环境调试工具为gdb,
目录
程序员获得的最重要技能是如何校准。
第一,什么是调试?它有多大意义?
1.2 基本调试步骤
2.1.1 调试和出版
2.2 下列应用程序的调试和发布版本之间的差异
二.3 使用快捷键的技术
24个问题:我好奇153是否是自残的, 如果你继续愚蠢地打F10,
三.1. 调试用于查明代码缺陷。
请求 1 已得到满足! + 2! + 3! +n! 未考虑溢出 。 以下代码有错误 。
三.2 如何写好守则(这很容易调试)
三.3 模拟库函数: strcpy( 字符串副本)
对于该函数的链访问, My_strcpy 函数旨在返回值类型字符* 。
Four 1 Const Const 解释惯例
五.1. 共同方案拟订错误
5.2 语法错误是一个同时发生的错误。
5.3 链接型错误
五.4 运行错误 - 调试错误 (标准乘法大小写)
程序员获得的最重要技能是如何校准。
有一些惊人的女人,如Windows, 但安全威胁太大了。
有些女性,如UNIX, 身材很好,但并非每个人都能玩。
有些妇女特别有吸引力,如C##,但家务工作不适合她们。
有些女士,如C++, 会为你默默地做很多事情。
有些女士,像爪哇一样, 收取一点费用, 并会为您服务任何地方。
其他女士,如JAVA Cripptt, 对她很谨慎, 但最终没有成功。
有些妇女像编集一样,但有时她们不得不乞求。
有些女人就像SQL一样 她会帮助你进步
死亡的循环就是爱 一旦实施,它就会被困住
爱上一个人是记忆的漏泄 你永远无法从中解脱出来
当你真正爱上一个人时, 极限是永远不会改变的。
女朋友是个人变数 只有我这种人才能打电话
情人是针头,必须谨慎处理,否则将造成巨大的灾难。
第一,什么是调试?它有多大意义?
一定有 某种记录 发生的一切。如果问心无愧,没有必要掩盖,因为没有迹象。如果问心有愧, 就必然需要掩盖,那就一定会有迹象,迹象越多,就越容易跟上。这就是推理的途径。沿着这条路走是一种犯罪。逆流而上,就是真相。

调试(英文:调试/调试)通常称为调试,是发现和减少计算机程序或电子仪器设备软件问题的一种方法。
1.2 基本调试步骤
发现程序错误的存在
错误的偏差等值, 消除等 。
确定错误产生的原因
提出更正错误的备选办法
纠正软件错误后重新测试 。
2.1.1 调试和出版
调试(有时称为调试版本)包括调试信息,但不优化程序员的调试程序。
发布版本(通常称为发布版本)经常进行不同的改进,使应用在代码大小和性能方面达到理想,使使用者能够有效使用。 (不可调试)
2.2 下列应用程序的调试和发布版本之间的差异
调试版本中的程序已断环; 在发布版本中, 程序可能会被执行 。
其原因是,在记忆中产生变量的顺序已经改变,影响到程序实施的结果。
估计速率是代码活动造成的一个死循环。
最初,Arr中只有10块,但我绕了12圈,在AR[10]时已经越过边界。首先,i和Arr是本地变量。先创建i,再创建arr,由于本地变量储存在储存区,这不可行。首先使用最高地址是习惯做法。再使用低地址
我把它放第一位 在初始化的顶端。Arr 表示数组,但数组的下标增长地址从低到高不等,如果数组交叉,也许有一刻,当我去 在那里我住的地方。我将 i 设置为零,将 arr 数组的地址设置为零。重新开始循环。为什么你相信最终结果会是死循环?你不知道在Arr数组和我的地址之间 有多少字节但是,如果差数数组到达我边界,它们就灭亡了。
这也是由于在存储区使用arr和i的做法; 如果初始化了, 我地址空间很低, 所以arr跨越边界, 却永远无法到达我的地址, 导致他在打印后崩溃 。
这都取决于编译者在中间的写作数量。例如,如果你去其他平台旅行, 你可能会发现自己空无一人, 因此为什么死亡循环不能不正确?因为程序一直在跑,因为周期没有结束,越过边界。因此,该程序必须完成,然后才能被错误地报告。得完成一件事情才行


二.3 使用快捷键的技术
1.F5 开始调试
使用技术:F5程序直接端,而不是单独,与F9(中点)结合使用
(更多次点击 F5, 在原逻辑断点停止, 例如将循环转换为两次, 并在下一个断点停止), 有人会发现 F5 没有反应, 需要添加 Fn+F5 或 Fn+F10 。
2.Ctrl+F5 不调试,直接代码执行
三.F9 激活/关闭断点
用法:为了执行代码,打F5,然后停在F9点。
使用 Ctrl+F 定位关键字
Ctrl+K+C 添加注释(用于完整选择) Ctrl+K+U 取消注释
第六, C 复制不需要指定的副本。 可以通过 hittong Ctrl+V 复制到需要复制的行中 。
此外,在底部增加了新的捷径和博客。
VS_M MrLisky 博客中的快捷键- CSDN 博客_vs

有同学发现,我打开调试->窗口,并没有发现监视是为什么?

这是因为许多监视窗口出现在调试程序开始时。

24个问题:我好奇153是否是自残的, 如果你继续愚蠢地打F10,
我们可以使用F5配合F9,在F9断点处右键->条件(条件断点),输入i==153(条件设置),这时候按F5,你会发现i跳过了152位,直接来到153


2 F10 (按进程处理,一个函数不输入函数,而是运行整个函数内容)
F11 (在此情况下, 函数将输入函数, 代码的每一个细节都将执行)
F10 访问函数添加,要输入函数的内部,请按 F11 键。配合监视窗口使用,也有自动监控(没有建议)。自动监控帮助您释放所有变量。如果您想要查看某个数字, 很容易犯错误 。我们所要做的就是关注我们希望监测的数字。

内存监视

当函数调用复杂的逻辑时,堆栈的调用逻辑是可见的。
三.1. 调试用于查明代码缺陷。
请求 1 已得到满足! + 2! + 3! +n! 未考虑溢出 。 以下代码有错误 。

第一次执行,
代码没有问题,一、一、一

两次处决的第二个! 那是两个,但是我们继续这样做, 我们发现后退是两个,你知道后退是 1 * *2 * * * * 角色,后退是改变的,而且不正确。

三.2 如何写好守则(这很容易调试)
一、二、代码正常运行,三、有极少的虫子。 4. 效果极佳可读性5. 6. 高度维护评论7明确无误,文书工作已经完成。
大众编码方法包括:
一. 利用主张。
二,尽量利用康斯特
三,培养一个体面的编码风格
四. 提出任何必要的评论。
五,避免被编码的陷阱。
三.3 模拟库函数: strcpy( 字符串副本)
将原始指针的内容转移到目标的空间指针上,同时复制它。

完美得分10分 代码5分 失败 尽管他也能完成我们需要的绳索拷贝

我们能做得更好吗?字符串第一次复制了两次。我们能改进它吗?
可以改为后置++
Assert用来断言 当我们通过两根手指是NULL时 当我们使用它时没有提出主张 我们非法获取记忆 将代码置于危险之中
代码仍然太复杂。 我们能否合并其余的 = src, src, src, src, src, sr
然后我们去看Strcpy的正式介绍
char*strcpy(char*strDestination,constchar*strSource);
对于该函数的链访问, My_strcpy 函数旨在返回值类型字符* 。
为了避免代码错误,还需要包括Const, 以便 src 目标空间的变量无法更新( 常数变量) 。
满分的函数设计!
Four 1 Const Const 解释惯例
康斯特应该让我们的代码更强 但是我们怎么用它来限制我们想要的代码呢?
盖康特会怎么样?
我锁了门,拒绝让你进去 而你砸碎了玻璃,跳进去了
康斯特有能力改变指针:
应将 Const 放在 * 的左边(成本 Int*p;)。
复选器为 *p, 表示 p 不能修改它所针对的对象, 但可以更改 p 变量中的地址 。
(int* const p;) Const on * to the right (int* const p;)
修饰符是 p, 表示 p 内容可能不会被修改, 但被定向的目标可以修改 。

五.1. 共同方案拟订错误

5.2 语法错误是一个同时发生的错误。
解答: 直接查看错误提示信息( 双击) 并纠正问题 。 或者使用您的经验。 它非常直截了当 。
5.3 链接型错误

解决方案 : 检查错误提示信息, 在错误信息中识别身份, 主要是在代码中, 然后查找问题所在 。 通常, 身份识别符不存在或者拼写错误的发现: 检查错误提示信息, 在错误信息中识别身份, 主要是在代码中, 然后定位问题 。 通常, 身份识别符不存在或者拼写错误 。
五.4 运行错误 - 调试错误 (标准乘法大小写)
“C”语言的第一级已经完成!
相关新闻
- 2023-04-16 2台电脑怎么共享(2台电脑怎么共享
- 2023-04-16 主板检测卡代码(电脑主板检测卡代
- 2023-04-16 dnf未响应(dnf未响应老是上不去)
- 2023-04-16 ppoe(pppoe拨号上网)
- 2023-04-16 网速不稳定(网速不稳定是路由器的
- 2023-04-16 wds状态(Wds状态成功)
- 2023-04-16 光标键(光标键不动了怎么办)
- 2023-04-16 电脑提速(电脑提速100倍的方法)
- 2023-04-16 切换用户(切换用户怎么切换回来
- 2023-04-16 数据包是什么(产品数据包是什么
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
