问题标签 [debugging]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
你如何调试 PHP 脚本?
你如何调试PHP脚本?
我知道基本调试,例如使用错误报告。PHPEclipse中的断点调试也很有用。
在 phpStorm 或任何其他 IDE 中进行调试的最佳(就快速和简单而言)方法是什么?
Win32下的堆损坏;如何定位?
我正在开发一个破坏堆的多线程C++ 应用程序。定位这种损坏的常用工具似乎不适用。源代码的旧版本(18 个月大)表现出与最新版本相同的行为,所以这已经存在很长时间了,只是没有被注意到;不利的一面是,源增量不能用于识别何时引入错误 -存储库中有很多代码更改。
崩溃行为的提示是在该系统中生成吞吐量 - 数据的套接字传输,该数据被转换为内部表示。我有一组测试数据会定期导致应用程序异常(各种地方,各种原因 - 包括堆分配失败,因此:堆损坏)。
该行为似乎与 CPU 功率或内存带宽有关;每台机器拥有的越多,就越容易崩溃。禁用超线程内核或双核内核会降低(但不会消除)损坏率。这暗示了一个与时间相关的问题。
现在问题来了:
当它在轻量级调试环境(比如Visual Studio 98 / AKA MSVC6
)下运行时,堆损坏相当容易重现 - 十到十五分钟后,某些事情会发生可怕的失败和异常,例如alloc;
在复杂的调试环境下运行时(Rational Purify,VS2008/MSVC9
甚至微软应用程序验证程序)系统成为内存速度限制并且不会崩溃(内存限制:CPU没有超过50%
,磁盘灯不亮,程序运行速度尽可能快,消耗1.3G
2G RAM的盒子) . 因此,我可以在能够重现问题(但不能识别原因)或能够识别原因或我无法重现的问题之间做出选择。
我目前对下一步的最佳猜测是:
- 获得一个疯狂的盒子(替换当前的开发盒:2Gb RAM in an
E6550 Core2 Duo
);这将使在强大的调试环境下运行时重现导致错误行为的崩溃成为可能;或者 - 重写操作符
new
,并delete
在完成后立即使用VirtualAlloc
并将VirtualProtect
内存标记为只读。运行MSVC6
并让操作系统捕获正在写入释放内存的坏人。是的,这是绝望的迹象:到底是谁重写new
和delete
?!我想知道这是否会使它像 Purify 等人一样慢。
而且,不:不能选择内置 Purify 仪器。
一位同事刚刚走过,问“堆栈溢出?我们现在堆栈溢出了吗?!?”
现在,问题是:我如何找到堆损坏器?
更新:平衡new[]
,delete[]
似乎在解决问题方面取得了长足的进步。现在,该应用程序在崩溃前大约需要两个小时,而不是 15 分钟。还没有。有什么进一步的建议吗?堆损坏仍然存在。
更新:Visual Studio 2008 下的发布版本似乎要好得多;STL
目前的怀疑取决于VS98
.
- 重现问题。
Dr Watson
将产生一个可能有助于进一步分析的转储。
我会记下这一点,但我担心 Watson 博士只会在事后被绊倒,而不是在堆被踩踏时。
另一种尝试可能是
WinDebug
用作调试工具,它非常强大,同时也是轻量级的。
现在又开始了:在出现问题之前没有太多帮助。我想在行为中抓住破坏者。
也许这些工具至少可以让您将问题缩小到某个组件。
我不抱太大希望,但绝望的时候需要...
您确定项目的所有组件都具有正确的运行时库设置(
C/C++ tab
VS 6.0 项目设置中的代码生成类别)吗?
不,我不是,明天我将花几个小时浏览工作区(其中有 58 个项目)并检查它们是否都在编译并与适当的标志链接。
更新:这需要 30 秒。选择对话框中的所有项目
Settings
,取消选择,直到找到没有正确设置的项目(它们都有正确的设置)。
Visual Studio “无法在 Web 服务器上开始调试。Web 服务器没有及时响应。”
在 Visual Studio 中编译并运行我的 Web 应用程序时,我经常收到以下错误:
“无法在Web服务器上开始调试。Web服务器没有及时响应。这可能是因为另一个调试器已经附加到Web服务器上。”
通常这是在已经调试过一次应用程序之后。从命令行我运行“iisreset /restart”,它解决了这个问题。
我如何首先防止这种情况发生?
Internet Explorer 中的 JavaScript 故障排除工具
我大量使用 Firebug 和 Mozilla JS 控制台,但时不时会遇到一个仅限 IE 的 JavaScript 错误,这真的很难找到(例如:第 724 行的错误,而源 HTML 只有 200 行)。
我很想有一个用于 Internet Explorer 的轻量级 JS 工具(a la firebug),如果我遇到错误然后卸载,我可以在几秒钟内将它安装在客户端的 PC 上。一些 Microsoft 工具需要一些严重的下载和配置时间。
有任何想法吗?
调试:IE6 + SSL + AJAX + post form = 404 错误
设置:
有问题的程序尝试通过 AJAX 调用将表单数据发布到与调用者相同的包中包含的目标过程。这是为使用安全连接 (HTTPS) 的站点完成的。这里使用的技术是PLSQL和DOJO JavaScript 库。该开发工具基本上是一个文本编辑器。
代码片段:
问题:
当使用 IE6(整个用户群都使用)时,从服务器发回的响应是 404 错误。
观察:
该程序在 Firefox 中运行良好。
调用过程不能针对同一包中的任何过程。
调用过程可以针对外部站点(http、https)。
包中不是表单数据帖子的其他 AJAX 调用工作正常。
我搜索了互联网并咨询了高级技能的团队成员,并没有发现任何令人满意的解决问题的方法。*在 Dojo 支持论坛上
尝试过问答。
问题:
您推荐哪些故障排除技术?
对于 HTTPS 分析,您推荐哪些故障排除工具?
关于问题可能是什么的任何假设?
对于不是完全(坏)黑客的解决方法有什么想法吗?
埃德。解决方案
lomaxx,感谢提琴手提示。您不知道获得它并将其用作调试工具有多棒。启动后,这是我发现的以及我如何修复它(至少在短期内):
在看到来自服务器的消息后,我又在 Fiddler 周围踢了一脚,看看我还能从中学到什么。发现有一个 WebForms 选项卡显示了 Web 表单中的值。你不知道吗,xxx_DISPLAYED_
上面的“”字段就在里面。
我还不明白为什么这些字段存在,因为我没有在 WebPLSQL
代码中明确创建它们。但我现在确实明白目标过程必须将它们作为参数包含在内才能正常工作。同样,这仅适用于IE6
我,因为 Firefox 运行良好。
好吧,这是短期的答案并破解它来修复它。希望在这个领域做更多的工作能够更好地理解这里的基本原理。
我无法让我的调试器停止对第一次机会异常的破坏
我正在使用 Visual C++ 2003 通过 TCP/IP 远程调试程序。
我设置了 Win32 异常 c00000005,“访问冲突”,以便在抛出时闯入调试器。然后,我将其设置回“使用父设置”。父项 Win32 Exceptions 的设置是在引发异常时继续。
现在,当我调试程序时,每次抛出异常时它都会中断,迫使我单击继续让它继续调试。我怎样才能让它停止像这样打破?
有没有类似“Firebug for IE”(用于调试 JavaScript)的东西?
我正在尝试修复一些 JavaScript 错误。在 Firefox 中工作时,Firebug 使调试这些问题变得更加容易,但是当代码在 Firefox 上运行良好但 IE 报错时,您会怎么做?
如何在 Visual Studio 2005 中调试 JavaScript?
我刚刚在 Stack Overflow 问题Best WYSIWYG CSS editor中看到了这一点,但不知道可以做到这一点。我是 Visual Studio 新手,你是怎么做到的?
JavaScript 是否有单独的调试器?我知道如何为代码隐藏页面工作……我通常使用 Firebug 来处理调试 JavaScript 代码。
我正在使用Visual Studio 2005。
MSVC6:断点停止程序
使用 Microsoft Visual Studio 98、Microsoft Visual C++ 6.0 SP6
在调试器下运行时,只有一个问题。如果我暂停程序并继续,一切都很好。
问题?当我遇到断点时,我的程序会停止。但不是很好;执行停止,我被抛出调试模式进入编辑模式。一切都很好,直到断点被击中。而且我知道它正在到达断点 - 我看到指向右侧代码行的黄色小箭头闪烁,检查窗口中的局部变量和该窗口中的调用堆栈。然后我盯着编辑器。
这发生在所有项目中。
我已经卸载并重新安装了 MSVC6。它没有帮助。
我即将在一台新电脑上重新开始;在我走那么远之前,有人知道我对这个做了什么吗?
注意:MSVC6 不是我的选择,但有原因。这是我使用的工具。而且,我们要针对 NT4,所以鉴于 2008 不能针对 NT4,而 2005 与 MFC 和 NT4 有问题,MSVC6 就是这样。
IL 级代码调试器
是否有任何以 VS 插件或独立应用程序形式存在的 IL 级调试器?
Visual Studio 的调试器很棒,但它允许您在 HLL 代码级别或汇编语言上进行调试,您无法调试 IL。似乎在某些情况下,有机会在 IL 级别进行调试会很有用。
特别是在调试您没有源代码的问题时,它可能会有所帮助。
当您没有源代码时调试 IL 是否真的有用是有争议的,但无论如何。