如果我打开使用Javac生成调试信息,则类文件大20-25%.这对运行Java程序有任何性能影响吗?如果是,在哪些条件和多少.我希望对加载类有一点影响,因为文件较大但这应该是最小的.
以编程方式检查当前程序集是在Debug或Release模式下编译的最简单方法是什么?
我正在研究破坏堆的多线程 C++应用程序.找到这种腐败的常用工具似乎不适用.源代码的旧版本(18个月之前)表现出与最新版本相同的行为,因此这已经存在了很长时间并且没有被注意到; 在缺点方面,源增量不能用于识别何时引入错误 - 存储库中存在大量代码更改.
崩溃行为的提示是在这个系统中产生吞吐量 - 数据的套接字传输,它被导入内部表示.我有一组测试数据会定期导致应用程序异常(各种地方,各种原因 - 包括堆分配失败,因此:堆损坏).
行为似乎与CPU功率或内存带宽有关; 机器越多,崩溃就越容易.禁用超线程核心或双核核心可降低(但不消除)损坏的速度.这表明与时间相关的问题.
现在这里有一个问题:
当它在一个轻量级的调试环境下运行时(比方说Visual Studio 98 / AKA MSVC6),堆损坏相当容易重现 - 在事情失败和异常失败之前经过十或十五分钟,就像alloc;在复杂的调试环境下运行时一样(Rational Purify,VS2008/MSVC9或者甚至是微软应用程序验证程序)系统变得内存速度受限并且不会崩溃(内存限制:CPU没有达到上面50%,磁盘指示灯不亮,程序运行速度快,盒子消耗1.3G2G RAM) .因此,我可以选择能够重现问题(但不能确定原因)或能够识别原因或我无法重现的问题.
我目前最好的猜测是下一步是:
E6550 Core2 Duo); 这样可以在强大的调试环境下运行时重现崩溃导致错误行为; 要么new并delete使用VirtualAlloc并VirtualProtect在完成后将内存标记为只读.运行MSVC6并让操作系统捕获正在写入释放内存的坏人.是的,这是绝望的标志:谁是地狱重写new和delete?!我想知道这是否会使它像Purify等人一样慢.而且,不是:内置Purify仪器的运输不是一种选择.
一位同事刚刚走过去问"Stack Overflow?我们现在收到堆栈溢出了吗?!?"
现在,问题是:我如何找到堆腐败者?
更新:平衡new[],delete[]似乎已经有很长的路要走解决问题.而不是15分钟,应用程序现在大约两个小时崩溃.还没有.还有什么建议?堆损坏仍然存在.
更新:Visual Studio 2008下的发布版本似乎要好得多; 目前的怀疑依赖于STL随船携带的实施VS98. …
今天我遇到了一个问题,我需要远程调试一个程序.该程序是从另一个系统启动的,所以我真的没有机会在命令行上与它进行交互.我可以轻松改变它的来源.
我需要做的是让程序正常启动,然后等待我用调试器连接它.我无法想出办法让我开心.我找到了错误,但没有调试器的帮助.
while(true) { }
Run Code Online (Sandbox Code Playgroud)
保持进程活着,然后我可以用调试器"设置下一个语句",但它看起来很尴尬和粗鲁.
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
看起来很奇怪,因为实际上没有一个控制台供我输入.(它也没有用.设置下一个语句然后运行会带你回到ReadLine()等待.)
那么我可以在.NET/CLR/C#程序中插入什么样的代码来说"在这里等到我可以用调试器附加"?
我的iPhone应用程序中有一次崩溃,它会抛出NSException.崩溃报告在错误的位置和导致错误的位置上完全不明确.有没有一种聪明的方法让我在某处设置顶级异常处理程序以查看导致它的原因?我自己无法复制问题,但我的一些beta用户当然可以.
什么是处理这种性质问题的聪明方法?
对于我当前的嵌入式应用程序,我试图将GDB观察点放在固定的内存地址上.
例如,我的应用程序更新以下地址:0x10793ad0.为了确保代码的哪一部分破坏了价值,我试过了
watch 0x10793ad0
Run Code Online (Sandbox Code Playgroud)
即使GDB在此之后没有打印任何错误,但即使我验证了值在执行的开始和结束之间被修改,它也无法在执行期间中断.
问题:
有谁知道如何在调试期间查看游标中的内容,以便我可以确定数据库帮助程序的功能?
它一直表现得像是在返回数据,但是当我尝试使用该cursor.isNull(0)方法时,我不断被NullPointerException抛出而无法看到光标在其中的内容,而单步执行则让我非常沮丧.
任何帮助将非常感激.
谢谢.
在我正在调试的方法中,我正在生成一个新线程.我需要调试这个新线程的执行而不是父线程.我怎么能在eclipse中这样做?
我想在Chrome或Safari JavaScript调试器的"Cart.add"功能中设置断点.问题是,这个函数是在一个大的缩小的JS文件中定义的,并且它本身不存在于一行上.
一些文档说基于WebKit的调试器在调试控制台中支持"break"或"debug"命令,但这些命令似乎不适用于较新版本的调试器.
在JS文件的该行上设置断点也不起作用,因为该行上有许多函数.
有什么建议?
debugging ×10
java ×3
.net ×2
eclipse ×2
android ×1
breakpoints ×1
c++ ×1
cocoa-touch ×1
cursor ×1
gdb ×1
iphone ×1
javac ×1
javascript ×1
jboss ×1
memory ×1
objective-c ×1
performance ×1
release ×1
safari ×1
watchpoint ×1
webkit ×1
windows ×1