山东一建建设有限公司官方网站,网站 建设网站,wordpress简化注册,网站开通支付宝收款一.码畜#xff1a;靠编译器帮自己查语法错误消灭笔误:编写适合程序员的键盘练习if (常量变量或表达式)使用goto接力超长的if,switch连续的if还是if elseif多个条件的组合:精心的排版多重括号的匹配条件编译各种const:不要纠结各种常量了#xff0c;这个世界上唯一不变的就是… 一.码畜靠编译器帮自己查语法错误消灭笔误:编写适合程序员的键盘练习if (常量变量或表达式)使用goto接力超长的if,switch连续的if还是if elseif多个条件的组合:精心的排版多重括号的匹配条件编译各种const:不要纠结各种常量了这个世界上唯一不变的就是变化。用APIWriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢查看宏展开后的.i文件VC编译选项加/EP /P项目、属性、配置属性、C/C、预处理器、预处理到文件是预处理取消显示行号是重新编译查看宏展开后对应的.i文件。gcc加-E偶遇到莫名其妙的编译错误都是用“每次用/*...*/或#if 0...#endif注释掉不同部分再重新编译直到定位到具体语法出错的位置。”的方法解决的。附加包含路径、附加库路径、附加依赖库的设置。二.码农靠调试器帮自己查逻辑错误for/while语句后多余的分号while/do while语句在语义上的歧义条件断点消息断点数据断点__asm int3或DebugBreak()断点在内存窗口中观察数据的原始字节形态Call Stack:崩溃的时候在弹出的对话框按相应按钮进入调试按Alt7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处看不懂时双击下一行直到能看懂为止。“给定一个小点的输入完整单步跟踪(同时按Alt7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门递归函数关注以下几个因素·退出条件·参数有哪些·返回值是什么·局部变量有哪些·全局变量有哪些·何时输出·会不会导致堆栈溢出语法糖越甜编译调试查错越苦C的隐藏调用:单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C源代码处。任务管理器、VMMap、Process Monitor、Process Explorer、GDI泄露检测工具、……三.码人靠写日志帮自己查运营错误CrashDump或Core的无力。PDB的无力。线上Debug的无力。观察复杂数据的无力。多线程调试的无力。调试时序高度依赖代码的无力。调试万年一遇非法数据的无力。有时不将“调用函数名字各参数值进入函数后各参数值中间变量值退出函数前准备返回的值返回函数到调用处后函数名字各参数值返回值”这些信息写日志到文件中是无论如何也发现不了问题在哪里的包括捕获各种异常、写日志到屏幕、单步或设断点或生成core或dmp文件、……这些方法都不行四.码神靠冥想和顿悟帮自己查不可再现错误假死的各种原因·控制循环的变量的取值范围有符号/无符号,/·控制循环的变量没变·控制循环的变量被外部程序修改·各种资源泄露·死锁·网速变慢或网络资源耗尽或网络时通时断·权限、UAC、杀毒软件实时防护·操作系统或软件自动升级·以为系统时间不可逆·以为系统时间相关变量不会溢出GetTickCount()约49.7天就归0了不要企图优雅的结束因为这是不可能办到的而要在烂的不能再烂的摊子上也能重整河山完关注它你就可以得到很多你想要的C/C开发工具及学习视频资料