OI-代码调试法

zhx今天在qbxt讲了这个知识点,遂整理一下.

一、环境配置(Windows7)

  • 桌面-计算机-右键-属性-高级系统设置-高级-环境变量-(用户变量)新建
  • 变量名:PATH,变量值:C:\Program Files (x86)\Dev-Cpp\MinGW64\bin

二、使用方法

  • 打开代码文件夹
  • shift+右键,在此处打开命令窗口

三、常用命令(gdb)

  • 编译:

    • g++ 1.cpp -o 1.exe -g(开启调试信息)
  • r:运行程序
  • b(设断点):
    • 按行数:b 行数 (if(xxx)) (例子:b 15 if(a=15))
    • 按函数名:b 函数名(b print)

  • s:进入单步执行
    • finish:完成当前函数(如:跳过print()的内部过程)
    • n:直接执行完这一步(如:for循环中)
  • c:运行到下一个断点
  • p a:输出变量a的值
  • display a:随时输出变量a的值
  • q:退出gdb

四、规避TLE/MLE

  • size 1.exe:查看1.exe的占用内存(除以10242即为多少M)

    • (编译:g++ 1.cpp -o 1.exe -g)
  • gprof 1.exe > test.out:对1.exe进行性能分析并将结果保存在test.out中
    • (编译:g++ 1.cpp -o 1.exe -g -pg)
    • 性能分析结果:
      • time:占用了百分之多少的时间

五、在OI中的应用

  • 在熟练使用后调试速度比其他方法更快,更适合在考场上使用

原文地址:https://www.cnblogs.com/zbsy-wwx/p/11753999.html

时间: 2024-10-05 05:50:33

OI-代码调试法的相关文章

HTTP PEM 万能调试法

最核心的任务便是向各位分享一个我从多年的前后端项目中总结而来的「万能」HTTP 调试法,掌握并从网络编程原理上理解它,能让我们顺利定位并解决所有 HTTP 接口问题.由于该方法主要涉及到的知识点包括 HTTP 代理(Proxy).编辑(Edit)与数据模拟(Mock),因此我称之为「HTTP PEM 调试法」. 接下来,我们就针对前面提出的几个问题,详细讲解下 PEM 调试法的思路. 如何调试线上 App 中的 H5 页面? 「HTTP PEM 调试法」之 Proxy 在上一期<猫哥网络编程系列

橡皮鸭程序调试法

摘自:http://coolshell.cn/ 让我来为你介绍一个程序调试大法——“橡皮鸭程序调试法”,这个方法在调试界是很出众的,实施起来相当方便和简易,几乎可以随时随地地实验,几乎不需要借助任何的软件和硬件的支持,你甚至可以把你的程序打印出来,在纸面上进行调试. 那么,为什么这个方法要叫做橡皮鸭呢?因为橡皮鸭子是西方人在泡澡时最喜欢玩的一个小玩具,所以,这个东西应该家家户户都必备的.因为,这个方法由西方人发明,所以,就被取名为“橡皮鸭”了. 好了,话不多说,下面是整个调试方法的流程. 找一个

小黄鸭调试法

小黄鸭调试法(又称橡皮鸭调试法,黄鸭除虫法)是软件工程中使用的调试代码方法之一.此概念是参照于一个来自<程序员修炼之道>书中的一个故事.传说中程序大师随身携带一只小黄鸭,在调试代码的时候会在桌上放上这只小黄鸭,然后详细地向鸭子解释每行代码. 许多程序员都有过向别人(甚至可能向完全不会编程的人)提问及解释编程问题,就在解释的过程中击中了问题的解决方案.一边阐述代码的意图一边观察它实际上的意图并做调试,这两者之间的任何不协调会变得很明显,并且更容易发现自己的错误.如果没有玩具小鸭子也可以考虑向其它

【Spark篇】---Spark调优之代码调优,数据本地化调优,内存调优,SparkShuffle调优,Executor的堆外内存调优

一.前述 Spark中调优大致分为以下几种 ,代码调优,数据本地化,内存调优,SparkShuffle调优,调节Executor的堆外内存. 二.具体    1.代码调优 1.避免创建重复的RDD,尽量使用同一个RDD 2.对多次使用的RDD进行持久化 如何选择一种最合适的持久化策略? 默认情况下,性能最高的当然是MEMORY_ONLY,但前提是你的内存必须足够足够大,可以绰绰有余地存放下整个RDD的所有数据.因为不进行序列化与反序列化操作,就避免了这部分的性能开销:对这个RDD的后续算子操作,

java面向代码调优的设计模式之flyweight pattern

代码调优,实际上就是为了降低程序的时空代价.Flyweight Pattern允许在应用中不同部分共享使用objects,这个就可以大幅度的减少new的对象个数,降低大量objects带来的时空代价.应用flyweight pattern的对象其可分为内部特征(不管在什么场合使用该ovject,内部特征都不变)和外部特征(不是固定的,需要在不同场合分别计算并产生变化).这个外部特征就保证了同一个对象可以在不同的场合进行应用,不同的场合需要不同的对象特性,我们就可以通过修改外部对象特征的方式使同一

calltree看代码调用图

calltree是在linux下面看c代码(尤其是复杂的内核代码)的神器. 推荐  calltree+vim + ctags + cscope + taglist [ vim: 搭建vim看代码的环境   http://www.cnblogs.com/mylinux/p/5013588.html] 或者 calltree + source insight source insight能方便地查看向上和向下的函数(变量等)调用关系,并且支持多种语言,几乎是无可替代的.但调用深度太大的时候,人就记不

Spark代码调优(一)

环境极其恶劣情况下: import org.apache.spark.SparkContext import org.apache.spark.rdd.RDD import org.apache.spark.sql.{DataFrame, Row, SQLContext} import org.apache.spark.sql.hive.HiveContext val sqlContext = new HiveContext(sc) val sql = sqlContext.sql("selec

改一下OI代码风格

为了方便差错以及代码阅读,是时候改一下以前的代码风格了,新的代码风格规则如下: 一.大致框架 所有的include必须放在程序开头 include顺序为:c++标准库>c标准库 c标准库的引用应用c前缀而不是.h后缀 main函数统一在整个程序的结尾 程序的输入部分大体由init函数来实现 所有函数均在全局变量声明后进行声明 不使用using namespace std,使用using std::cin与using std::cout,方便打表 预处理操作保存在prepare函数中,重置操作保存

如何更好地给同事讲代码?

我们技术团队有两个习惯:一是程序员写好一个新的比较重要的系统,或是引入了一个第三方框架或库后,主程会要求程序员做一个ppt,在会议室里给所有程序与QC做一次团队分享:二是程序员写好一个新系统,或做了比较大的或比较重要的修改后,要知会相关QC,并把QC叫到电脑前,一对一把相关代码给QC讲一遍. 我认为做ppt团队分享可以起到两个重要作用:一是让团队成员之间时常互通有无,避免各人只了解自己手头负责的一小块内容:长期保持这种习惯,可以很好地增进技术团队的凝聚力,也可以帮助技术团队保持敏捷.二是分享用的