程序调试

对拍

$ Windows $ 下的对拍程序

  • 借助 \(Windows\) 脚本
@echo off
:loop
r.exe > input.in
coronas.exe <input.in > output.a
std.exe <input.in > output.b
fc output.a output.b
if not errorlevel 1 goto loop

一直没有找到怎样能控制对拍次数,今天终于醒悟,可以用 \(C++\) 写对拍 ,不仅能控制对拍次数,可移植性还更强,修改更方便

#include <cstdlib>
#include <cstdio>
#define input "input.in"
#define output1 "output.a"
#define output2 "output.b"
int main() {const int t=100;for(int i=1; i<=t; i++) {system("r.exe" ">" input);system("Coronas.exe" "<" input ">" output1);system("std.exe" "<" input ">" output2);int a=system("fc " output1 " " output2 ">null");printf("test Case %d : ",i);if(a) {printf("Error.\n");return 1;} else {printf("Right.\n");}}system("del " input);system("del " output1);system("del " output2);system("del " "null");return 0;
}

\(Linux\) 下的对拍程序

脚本:

#!bin/bash
while true;do./r>input./a<input>output.a./b<input>output.bdiff output.a output.b          #文件比较if [ $? -n 0 ] ; then break; fi # 判断返回值
done

\(Linux\) 下的对拍有很多问题,比如要开权限(上面的文件要用 source 命令运行),比如命令不回显,所以根本不知道是在比较还是程序死循环了,这时候借助 \(C++\) 就很有意义了

#include <cstdlib>
#include <cstdio>
#define input "input"
#define output1 "output.a"
#define output2 "output.b"
int main() {const int t=100;for(int i=1; i<=t; i++) {system("./r" ">" input);system("./Coronas" "<" input ">" output1);system("./std" "<" input ">" output2);int a=system("diff " output1 " " output2); //diff a b 为比较文件 a ,b 的内容,注意如果a,b的内容相同,则返回 0//如果a,b 的内容不同,返回值为 1printf("test Case %d : ",i);if(a) {printf("Error.\n");return 1;} else {printf("Right.\n");}}system("rm " input);system("rm " output1);system("rm " output2);return 0;
}

gdb

使用 \(gdb\) 调试程序前一定要记得在编译选项中加上 -g
比如 \(C\)语言程序,编译命令应为 gcc example.c -g
若为 C++,编译命令应为 g++ example.cpp -o example -Wall -g

然后用 gdb example.exe (Windows) 或 gdb example (Linux) 来加载程序就可以了。

可以在 vimrc 中添加Debug() 函数:

func Debug()exec "w"if &filetype=='cpp'exec "!g++ % -std=c++11 -Wall %< -o -g"elseif &filetype=='c'exec "!gcc %< -g"endifexec "!gdb %<"
endfunc

转载于:https://www.cnblogs.com/Corona09/p/9820452.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450969.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不怕烧钱怕翻车:雷军与马化腾现场“过招”

说起微信&#xff0c;很多时尚潮人都很熟悉。这款软件可以发送语音信息、可以在有无线网络的地方免费发送、甚至只需摇一摇就能找到在你附近的用户&#xff0c;这些方便、时尚、新颖的元素使微信受到了很多用户的喜爱&#xff0c;也夺得了大量的市场。其实&#xff0c;在微信发…

php基础(一)

1、header(contentType:text/html,charset:utf-8)设置编码 2、查找字符串最后一次出现的 strrpos() 查找字符第一次出现的 strpos 3、array_sum() 返回数组值得和 4、func_num_args() 求函数参数的个数 5、func_get_args() 获取函数的所有参数 6、匿名函数 例子 $anonymityfun…

Thread.yield()和Thread.sleep(0)

关于Thread.yield()和Thread.sleep(0)的语义问题真是一个让人挠头的问题&#xff0c;翻了好多资料&#xff0c;在java6语言规范中看到了一段这样的描述&#xff1a; 重点在红框中&#xff0c;简而言之就是&#xff1a;sleep(0)和yield()的实现不需要任何可见的效果。那么在实现…

OOA:面向对象

见&#xff1a;https://baike.baidu.com/item/OOA/3659916?fraladdin OOA:面向对象&#xff1a; Object-Oriented Analysis&#xff08;面向对象分析方法&#xff09;是确定需求或者业务的角度&#xff0c;按照面向对象的思想来分析业务。例如&#xff1a;OOA只是对需求中描述…

DCT原型 ——傅里叶级数

傅里叶级数 法国数学家傅里叶发现&#xff0c;任何周期函数都可以用正弦函数和余弦函数构成的无穷级数来表示&#xff08;选择正弦函数与余弦函数作为基函数是因为它们是正交的&#xff09;&#xff0c;后世称为傅里叶级数&#xff08;法语&#xff1a;srie de Fourier&#xf…

c 递归算法

#include <stdio.h>double factorial(unsigned int i) {if(i < 1){return 1;}return i * factorial(i - 1); } int main() {int i 15;printf("%d 的阶乘为 %f\n", i, factorial(i));return 0; } 转载于:https://www.cnblogs.com/sea-stream/p/9822437.htm…

红黑树和B+树

&#xff08;一&#xff09;红黑树 红黑树是一种自平衡二叉查找树&#xff0c;也被称为"对称二叉B树"&#xff0c;它可以在O(logn)时间内利用 O(logn)的空间来完成查找、插入、删除操作。红黑树的读操作与普通二叉查找树相同&#xff0c;而插入和删除操作可能会破坏…

策略模式、观察者模式、代理模式、装饰模式 应用场景和实现

有个大神写的很好&#xff1a; 参考&#xff1a;设计模式学习笔记&#xff08;四&#xff1a;策略模式&#xff09; 参考&#xff1a;设计模式学习笔记&#xff08;二&#xff1a;观察者模式&#xff09; 参考&#xff1a;设计模式学习笔记-代理模式 参考&#xff1a;设计模式-…

DQL、DML、DDL、DCL的概念与区别

http://blog.csdn.net/tomatofly/article/details/5949070 SQL语言的分类 SQL语言共分为四大类&#xff1a;数据查询语言DQL&#xff08;Data Query Language&#xff09;&#xff0c;数据操纵语言DML&#xff0c;数据定义语言DDL(Data Definition Language)&#xff0c;数据…

python学习总结

1.python环境搭建方便&#xff0c;只需要安装python解释器 2.python把任意数据类型赋值给变量&#xff0c;不用定义类型 3.Python的整数浮点数没有大小限制&#xff0c;不用担心超过数值范围。比如java的 int&#xff0c;long 4.python自带最常用的list列表和dicitonary字典&am…

李国杰院士:国内开源社区的崛起需要一个过程

[CSDN.NET 付江/文]日前&#xff0c;在第二届“龙芯杯”中国开源软件设计大赛启动仪式上&#xff0c;CSDN记者专访了中国工程院院士、第三世界科学院院士李国杰。李国杰院士就国产基础软件现状、面临的机遇和挑战、开源环境以及生态系统建设等话题分享了自己的看法。 打造自主…

SuperMap iObject入门开发系列之五管线属性查询

本文是一位好友“托马斯”授权给我来发表的&#xff0c;介绍都是他的研究成果&#xff0c;在此&#xff0c;非常感谢。 管线属性查询功能针对单一管线图层进行特定的条件查询&#xff0c;然后将查询结果输出为列表&#xff0c;并添加点位闪烁功能&#xff0c;例如查询污水管线中…

三类基于贪心思想的区间覆盖问题

一、区间完全覆盖问题 问题描述&#xff1a;给定一个长度为m的区间&#xff0c;再给出n条线段的起点和终点&#xff08;注意这里是闭区间&#xff09;&#xff0c;求最少使用多少条线段可以将整个区间完全覆盖。 样例&#xff1a;一个长度为8的区间&#xff0c;可选的线段有[2,…

ubuntu 常用软件和命令

永久修改屏幕的分辨率   sudo gedit .profile 将下面的四句话加入。.profile文件的最后   cvt 1280 768   xrandr --newmode "1280x768_60.00" 79.50 1280 1344 1472 1664 768 771 781 798 -hsync vsync   xrandr --addmode Virtual1 "1280x768_60.00&q…

Eclipse搭建Android开发环境(安装ADT,Android4.4.2)

见&#xff1a;http://blog.csdn.net/zht666/article/details/29837777 使用Eclipse做Android开发&#xff0c;需要先在Eclipse上安装ADT&#xff08;Android Development Tools&#xff09;插件。 1.安装JDK 1.7 JDK官网http://www.oracle.com/technetwork/java/javase/downlo…

C语言 位操作简析

位运算 前面介绍的各种运算都是以字节作为最基本位进行的。 但在很多系统程序中常要求在位(bit)一级进行运算或处理。&#xff23;语言提供了位运算的功能&#xff0c; 这使得&#xff23;语言也能像汇编语言一样用来编写系统程序。 一、位运算符&#xff23;语言提供了六种位运…

算法:输入一个链表,输出该链表中倒数第k个结点。

算法&#xff1a;输入一个链表&#xff0c;输出该链表中倒数第k个结点。《剑指offer》 思路加到注释里面了&#xff1b; 1&#xff1a;两个if判断是否返回值为空&#xff0c;首个为空&#xff0c;没有第k个值&#xff1b; 2&#xff1a;for循环找到倒数第k个值&#xff0c;返回…

Spring事务那些事儿

&#xff08;一&#xff09;事务的隔离级别 大家都知道事务有四个属性&#xff0c;即ACID&#xff08;原子性、一致性、隔离性、持久性&#xff09;。这四个里面稍微难理解点的是一致性和持久性。所谓的一致性是指&#xff1a;事务执行前后数据的一致性状态&#xff0c;例如事…

Silverlight Blend动画设计系列八:拖放(Drag-Drop)操作与拖放行为(DragBehavior)

Silverlight & Blend动画设计系列八&#xff1a;拖放(Drag-Drop)操作与拖放行为(DragBehavior) 原文:Silverlight & Blend动画设计系列八&#xff1a;拖放(Drag-Drop)操作与拖放行为(DragBehavior)在Silverlight中自身并没有提供拖放功能的相关实现&#xff0c;要实现拖…

mysql查询显示行号

见&#xff1a;http://blog.csdn.net/muzizhuben/article/details/49449853 使用mysql查询显示行号&#xff0c;没有像oracle这么方便。 不过也可以通过设定变量显示行号&#xff0c;例如&#xff1a; -- 生成 行号 select r:r1 as rowno , a.* from my_tb a ,(select r:0) b …