小编Jos*_*osh的帖子

Win32下的堆损坏; 如何定位?

我正在研究破坏堆的多线程 C++应用程序.找到这种腐败的常用工具似乎不适用.源代码的旧版本(18个月之前)表现出与最新版本相同的行为,因此这已经存在了很长时间并且没有被注意到; 在缺点方面,源增量不能用于识别何时引入错误 - 存储库中存在大量代码更改.

崩溃行为的提示是在这个系统中产生吞吐量 - 数据的套接字传输,它被导入内部表示.我有一组测试数据会定期导致应用程序异常(各种地方,各种原因 - 包括堆分配失败,因此:堆损坏).

行为似乎与CPU功率或内存带宽有关; 机器越多,崩溃就越容易.禁用超线程核心或双核核心可降低(但不消除)损坏的速度.这表明与时间相关的问题.

现在这里有一个问题:
当它在一个轻量级的调试环境下运行时(比方说Visual Studio 98 / AKA MSVC6),堆损坏相当容易重现 - 在事情失败和异常失败之前经过十或十五分钟,就像alloc;在复杂的调试环境下运行时一样(Rational Purify,VS2008/MSVC9或者甚至是微软应用程序验证程序)系统变得内存速度受限并且不会崩溃(内存限制:CPU没有达到上面50%,磁盘指示灯不亮,程序运行速度快,盒子消耗1.3G2G RAM) .因此,我可以选择能够重现问题(但不能确定原因)或能够识别原因或我无法重现的问题.

我目前最好的猜测是下一步是:

  1. 得到一个疯狂的grunty框(以取代当前的开发框:2Gb RAM E6550 Core2 Duo); 这样可以在强大的调试环境下运行时重现崩溃导致错误行为; 要么
  2. 重写操作符newdelete使用VirtualAllocVirtualProtect在完成后将内存标记为只读.运行MSVC6并让操作系统捕获正在写入释放内存的坏人.是的,这是绝望的标志:谁是地狱重写newdelete?!我想知道这是否会使它像Purify等人一样慢.

而且,不是:内置Purify仪器的运输不是一种选择.

一位同事刚刚走过去问"Stack Overflow?我们现在收到堆栈溢出了吗?!?"

现在,问题是:我如何找到堆腐败者?


更新:平衡new[],delete[]似乎已经有很长的路要走解决问题.而不是15分钟,应用程序现在大约两个小时崩溃.还没有.还有什么建议?堆损坏仍然存在.

更新:Visual Studio 2008下的发布版本似乎要好得多; 目前的怀疑依赖于STL随船携带的实施VS98. …

c++ memory windows debugging multithreading

59
推荐指数
4
解决办法
4万
查看次数

使用Python将字符串转换为格式化的日期时间字符串

我正在尝试将字符串"20091229050936"转换为"2009年12月29日(UTC)"

>>>import time
>>>s = time.strptime("20091229050936", "%Y%m%d%H%M%S")
>>>print s.strftime('%H:%M %d %B %Y (UTC)')
Run Code Online (Sandbox Code Playgroud)

AttributeError: 'time.struct_time' object has no attribute 'strftime'

显然,我犯了一个错误:时间错了,它是一个日期时间对象!它有一个日期时间组件!

>>>import datetime
>>>s = datetime.strptime("20091229050936", "%Y%m%d%H%M%S")
Run Code Online (Sandbox Code Playgroud)

AttributeError: 'module' object has no attribute 'strptime'

我是怎么意思将字符串转换为格式化的日期字符串?

python time datetime strftime strptime

22
推荐指数
2
解决办法
7万
查看次数

Visual C++ Redistributables而不使用VCRedist_x86.exe

我正在一个受到严重限制的环境中开发,但开发人员也可以严格控制.

VCRedist_x86.exe - 一个4Mb可再发行 - 没什么好玩的(传输4个小时).我真的更喜欢重新分发MFC90.dll,msvcm90.dll,msvcp90.dll和msvcr90.dll - 这更像是2Mb.但是,重新分发Visual C++文件说:

不支持重新分发在没有清单的情况下构建的C/C++应用程序.如果没有清单将应用程序绑定到这些库,则C/C++应用程序无法使用Visual C++库.有关更多信息,请参阅选择部署方法.

我最初将DLL复制到程序工作目录中的计划似乎不适用于这个勇敢的新的清单世界.

我的下一个猜测是提取填充文件到WinSxS目录所需的注册表项并自己填充(而不是使用4兆程序).

[edit]软件经常更新,因此DLL比静态链接更受欢迎.[/编辑]

如何成功分发必要的文件但保持开销?

dll winsxs visual-c++

15
推荐指数
2
解决办法
4万
查看次数

FF3 WinXP!= FF3 Ubuntu - 为什么?

我有一个网站,我刚刚上传到互联网上,它在Ubuntu和WinXP上使用Firefox 3.0.1显示不同.

我在Ubuntu上注意到的两件事:

  1. 缺少图标
  2. 背景颜色未显示(在样式表中设置)

我做错了什么?CSS文件是在Ubuntu下获取的,那么为什么它不应用所有的样式表,只是它喜欢的位?为什么不显示favicon?他们是同一个问题吗?


关于背景颜色的答案:无效的HTML.但我喜欢有人解释为什么它在Windows下工作而不是Ubuntu.

关于favicon的答案:以前,没有图标.浏览器缓存了缺少的图标. 清除Firefox缓存,一切都很顺利.

css ubuntu firefox

12
推荐指数
1
解决办法
657
查看次数

托管代码中的.NET内存管理比本机代码更快吗?

我原本以为在托管代码中内存分配是否比本机代码更快是明确的 - 但似乎存在一些争议.也许虚拟机下的内存管理更快,因为没有对操作系统的上下文交换调用,但后来我发现虚拟机本身需要定期调用操作系统以获得更多内存,并且它具有内存本身的管理开销而不是操作系统.

而不是像我一样制作未经证实的断言,请提供支持您职位的参考文献的链接.

.net memory clr performance vm-implementation

11
推荐指数
2
解决办法
983
查看次数

OpenID属性交换 - 我应该使用它吗?

我的网站将仅使用OpenID进行身份验证.我想通过属性交换来提取用户详细信息,但属性交换似乎给StackOverflow带来了很多麻烦.

该行业目前的发展状况如何?是否有任何OpenID提供商在属性交换方面做得不错?

我应该完全避开OpenID属性交换吗?

我如何处理对功能的不一致支持?

openid authentication

10
推荐指数
1
解决办法
2816
查看次数

为什么我不能在Arduino中传递typedef或enum?

以下草图无法在Arduino环境中编译.

鉴于typedef可以在Arduino软件中使用,自动原型生成是否会导致失败?如果是这样,它是什么,为什么Arduino不提供围绕C++的轻量级包装?

#define PRODUCE_WACKY_COMPILETIME_ERROR
typedef int MyMeaningfulType;

#ifndef PRODUCE_WACKY_COMPILETIME_ERROR
void myFunc(MyMeaningfulType myParam);
#endif

void myFunc(MyMeaningfulType myParam)
{
  myFunc(10);
}

void setup() {}
void loop() {}
Run Code Online (Sandbox Code Playgroud)

为了搜索引擎的利益,报告的错误是:

error: variable or field 'myFunc' declared void
error: 'MyMeaningfulType' was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

c++ typedef arduino

7
推荐指数
1
解决办法
8179
查看次数

MSVC6:断点停止程序

使用Microsoft Visual Studio 98,Microsoft Visual C++ 6.0 SP6

在调试器下运行时,只有一个问题.如果我暂停程序并恢复,一切都很好.

问题?当我遇到断点时,我的程序停止了.但不是很好; 执行暂停,我被调出模式进入编辑模式.一切都很好,直到断点被击中.而且我知道它正在触及断点 - 我看到一个小黄色箭头指向正确的代码行,检查窗口中的局部变量和该窗口中的调用堆栈.然后我盯着编辑.

这发生在所有项目中.

我已经卸载并重新安装了MSVC6.它没有帮助.

我即将开始使用新PC; 在我走那么远之前,有谁知道我对这个做了什么?


注意:MSVC6不是我的选择,但有原因.这是我使用的工具.并且,我们达到目标NT4,因此2008年不能针对NT4和2005年MFC和NT4,MSVC6的问题.

c++ windows debugging visual-c++-6 visual-c++

5
推荐指数
1
解决办法
1006
查看次数

如何在Bash命令行中生成ASCII代码2和3?

如果我按Ctrl+ B应该给我ASCII码2,但Ctrl+ C将被解释为Break.

所以我认为我必须重定向文件.如何将这些字符放入文件中?

unix linux bash ascii

3
推荐指数
2
解决办法
3351
查看次数

什么时候Visual Basic变得面向对象?

鉴于BASIC成立50周年,我正在阅读维基百科文章,关于VB的部分表明"最近"它变成了面向对象.

显然我需要澄清,通常理解面向对象包括实现继承和多态行为.已经断言VB.NET 2002是面向对象的.我知道VB.NET 2002遵循VB6.

VB6有实现继承和多态行为吗?VB.NET 2002是否具有实现继承和多态行为?VB.NET 2002是否具有面向对象的其他方面?

2002年VB.NET维基百科的文章给出了2001年和2002年的发行日期.什么时候VB.NET 2002"发布"?

vb.net oop vb6

2
推荐指数
1
解决办法
188
查看次数

为什么我的网站不显示我的网站?

我有一个网站,我刚刚上传到互联网上.当我在Ubuntu上使用Firefox 3.0.1浏览网站时,我没有看到favicon; WinXP上的Firefox 3.0.1确实显示它.

为什么不在Ubuntu下展示favicon?它是根目录中的favicon.ico文件,未在元标记中引用; 作为GIF会更好吗?

favicon ubuntu firefox

1
推荐指数
2
解决办法
3493
查看次数

如何监控网络流量 node.js 和 Windows 库

嗨,我想使用 node.js 监视/捕获 TCP/UDP 和其他信息,有没有可以帮助我的模块?我正在查看节点窗口和其他模块,但我不知道该怎么做。node.js 有一个模块 os,我可以使用该模块列出网络接口,但是如何找到通过该接口的所有流量?

node.js

1
推荐指数
1
解决办法
5777
查看次数

应该添加哪个头文件以在Linux上使用C++中的线程

我知道C++支持线程.在Windows平台上,使用#include <thread>工作正常.

#includes <thread>在Linux上工作,还是应该使用一些不同的头文件?

c++ linux multithreading

0
推荐指数
1
解决办法
1392
查看次数