调试点滴经验

   CodeBlocks 遭遇:  Can't  open outFile  debug    permission denied    

 解决办法:   在任务管理器中 , 关闭 **.exe  进程。

codeBlocks遭遇:  Process returned 4256912 (0x40F490)

  编译通过,运行时出现错误提示。:

   关闭codeBlocks,然后重启codeBlocks,完美解决

又一次没那么幸运,重新注销,重启CodeClocks,才解决。

什么原因引起的。。。???

  codeBlocks遭遇:project路径中包含汉字字符,导致断点不停。

解决方案 !!!!重新建立工程。路径中不能出现中文

遭遇: 洛谷上下载的数据, 没有分行( linux下跟windows下不一样)

解决: 你用word打开再保存一下就好了

关于函数递归时候的崩溃问题 

在最终评测时,调用栈占用的空间大小不会有单独的限制,但在我们的工作
环境中默认会有 8 MB 的限制。这可能会引起函数调用层数较多时,程序发生
栈溢出崩溃。
我们可以使用一些方法修改调用栈的大小限制。例如,在终端中输入下列命

ulimit -s 1048576

此命令的意义是,将调用栈的大小限制修改为 1 GB。

将上述源代码编译为可执行文件 sample 后,可以在终端中运行如下命令运行该程序./sample如果在没有使用命令“ulimit -s 1048576”的情况下运行该程序,sample会因为栈溢出而崩溃;如果使用了上述命令后运行该程序,该程序则不会崩溃。特别地,当你打开多个终端时,它们并不会共享该命令,你需要分别对它们运行该命令。请注意,调用栈占用的空间会计入总空间占用中,和程序其他部分占用的内存共同受到内存限制

很多题解中提到:卡常数:百度解释如下:

一般指程序虽然渐进复杂度可以接受,但是由于实现/算法本身的时间常数因子较大,使得无法在时限内运行结束。
f(n)=n=\Theta(n),g(n)=20n=\Theta(n),可以看到f和g的渐进复杂度是相同的,但是g本身是f的20倍,如果时限1s,f要跑0.1s的话,g就要跑2s而超时。

遭遇:在Cmd窗口中复制数据,没法复制完整



解决方案:可能原因:Windows默认命令行窗口大小和缓冲区大小太小。建议用文件读写。

遭遇:Program received signal SIGSEGV, Segmentation fault解决方案:

程序里执行了无效的内存引用。

对于不正确的内存处理,计算机程序可能抛出SIGSEGV。操作系统可能使用信号栈向一个处于自然状态的应用程序通告错误,由此,开发者可以使用它来调试程序或处理错误。
  在一个程序接收到SIGSEGV时的默认动作是异常终止。这个动作也许会结束进程,但是可能生成一个核心文件以帮助调试,或者执行一些其他特定于某些平台的动作。


小技巧:

技巧1:    #define debug(...) fprintf(stderr, __VA_ARGS__)
技巧2:   incline的使用
技巧3:  (double)clock() / CLOCKS_PER_SEC
技巧4      codeBlocks中调试按钮合理使用

技巧4:  assert断言使用



3 codeBlocks



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值