问题标签 [debug-build]

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.

0 投票
2 回答
1356 浏览

通过调试版本与发布版本管理/使用库

我很好奇每个人在为您编写的应用程序使用或分发库时的做法。

首先,在开发应用程序时,是否链接库的调试版本或发布版本?(当您在调试模式下运行应用程序时)

然后,当您在部署之前以发布模式运行您的应用程序时,您使用哪个版本的库?

您如何在库的调试版本和发布版本之间进行切换?你是手动做的,你使用宏,还是你做的其他什么?

0 投票
15 回答
14432 浏览

STL 替代方案

我真的很讨厌使用 STL 容器,因为它们使我的代码的调试版本运行得非常缓慢。其他人使用什么来代替具有合理性能的调试构建的 STL?

我是一名游戏程序员,这在我从事的许多项目中一直存在问题。当你对所有东西都使用 STL 容器时,很难达到 60 fps。

我的大部分工作都使用 MSVC。

0 投票
3 回答
4112 浏览

在非开发机器上运行 vc2008 调试构建

我正在 vc2008 中构建我的应用程序并在机器网络上对其进行测试。

除了安装 Visual Studio 2008 之外,还有什么方法可以在另一台机器上运行 C++ 程序的调试版本?(即没有安装vc2008)

安装 redist 软件包只会安装 vc2008 程序的发布模式支持 DLL。目前它抱怨“此应用程序无法启动,因为应用程序配置不正确。重新安装应用程序可能会解决此问题。”,我认为这是“我缺少 DLL”的代码。

0 投票
8 回答
1291 浏览

C# - 真的需要在.net中进行调试吗

如果发布版本生成 .pdb 文件并且您可以进入每一行,放置断点等,那么为什么还要费心构建我的组件的“调试”版本呢?

我在我的项目中使用 c#,并且我在调试发布版本时没有问题。在 C++ 中,我在调试优化代码时遇到了问题,但在 C# 中它工作正常。我不是在谈论愚蠢的代码块,比如if(false)......

0 投票
5 回答
2623 浏览

如何在 VC++ 6.0 中自动链接调试/发布库?

我正在尝试维护一个 5 年前用 VC++ 6.0 编写的程序。它使用我们的“通用”库。我遇到的问题是,它要么链接到这些库的调试版本,要么链接到发布版本,这取决于我是否将 [库文件] 的 [目录] 设置为 [工具]->[选项]。

如何在构建调试版本时链接到 [common\debug\common.lib],在构建发布版本时链接到 [common\release\common.lib]?如果我在库目录中有两个路径,它似乎链接到它找到的第一个。

0 投票
3 回答
3876 浏览

防止使用 ClickOnce 部署调试版本

我正在使用 VS2008 发布 ClickOnce 应用程序,但在每次发布之前,我必须手动切换到发布配置。这很好,只要我不忘记切换。有没有办法阻止部署调试版本?是否有一些编译器指令,例如:

或者有没有办法(没有构建脚本)在发布之前自动切换到发布配置?

(我发现了一些类似的问题,但不喜欢他们的回答者)

谢谢

0 投票
4 回答
797 浏览

Inverse Heisenbug - 仅在附加调试器时单元测试才会失败

我最近修复了我们产品中的一个缺陷,其症状是访问悬空指针导致的访问冲突。

为了获得良好的实践,我添加了一个单元测试以确保错误不会再次出现。在编写单元测试时,我总是会退出我的缺陷修复并确保单元测试失败,否则我知道它没有正确地完成它的工作。

退出缺陷修复后,我发现我的单元测试仍然通过(不好)。当我将调试器附加到单元测试以查看它为什么通过时,测试失败(即抛出异常)并且我可以中断并观察调用堆栈与我修复的原始缺陷中的调用堆栈匹配。

我没有修改 Visual Studio 2005 中的“异常中断”设置,这确实是导致测试工具终止的关键 Win32 异常(即没有正常的异常处理程序)。

例外的文本是:

注意:位置并不总是0xcdcdcdcd(已分配但未写入的 Win32 堆内存)。有时是0x00000000,有时是另一个地址。

这似乎与传统的 Heisenbug 相反,通过调试器观察问题时问题就会消失。就我而言,通过调试器观察它会使问题出现!

我最初的想法是,这是调试器中的时序差异所暴露的竞争条件。但是,当我将跟踪添加到代码并与调试器分开运行时,我打印出来的数据向我表明,应用程序应该以与在调试器下运行时类似的方式中止。但事实并非如此!

关于可能导致这种情况的任何建议?


更新: 我正在缩小这个问题的原因。有关更多详细信息,请参阅此问题。如果我找到它,将用答案更新这个问题。

0 投票
3 回答
362 浏览

将应用程序部署到 iPad 时出现奇怪的控制台消息

昨天我的应用程序正在部署(调试版本)到 iPad 上。但今天我升级到 iOS 4.2.1(即当前版本),现在它在控制台上吐出很多废话,并在最终运行应用程序之前挂起不确定的时间(有时几分钟或更长时间)装置。

任何人都可以对这种行为有所了解吗?我该如何摆脱它?

PS看最后一行:

到底发生了什么?我的应用程序中或我生活中的任何其他地方都与日语无关。我的硬盘上有几部很棒的吉卜力电影,但仅此而已。

0 投票
4 回答
12740 浏览

运行 VS2008 64 位调试版本的“应用程序配置不正确”和“并排配置不正确”

我正在使用带有 64 位插件的 64 位操作系统 windows 7 终极机器 VS2008。

我已经成功地在 32 位和 64 位、调试和发布配置中构建了我的项目。64 位调试未启动;它给出了错误:

无法启动程序 xxx 此应用程序无法启动,因为应用程序配置不正确。查看清单文件以了解可能的错误。重新安装应用程序可能会解决此问题。有关更多零售,请参阅应用程序事件日志。

我运行了依赖步行器。从可再分发路径 C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\amd64\Microsoft.VC90.DebugCRT 我添加了 Microsoft.VC90.DebugCRT.manifest msvcm90d msvcp90d msvcr90d Microsoft.VC90.DebugOpenMP vcomp90d。 sll 在我的解决方案的 bin\debug 文件夹中。

最后依赖walker没有留下任何黄色标记(丢失文件),但它仍然给出了如下错误:

错误:未找到至少一个必需的隐式或转发依赖项。错误:由于隐式依赖模块中缺少导出函数,至少一个模块具有未解析的导入。错误:发现具有不同 CPU 类型的模块。错误:“e:\xyz.EXE”中的并排配置信息包含错误。应用程序无法启动,因为它的并排配置不正确。请查看应用程序事件日志或使用命令行 sxstrace.exe 工具了解更多详细信息 (14001)。

32位清单说:

而 64 位调试清单具有:

我不明白的是,为什么调试 32 位构建运行成功?

请帮助我,因为我已经检查了很多问题,但还没有找到任何可行的解决方案。

0 投票
1 回答
912 浏览

用于调试的 Cmake 标志在 valgrind 中似乎没有用?

好的,所以我有这个我正在尝试调试的 Qt 应用程序;在其上运行 valgrind 并将输出重定向到文件后,我看到许多“肯定丢失”的块看起来像这样,这让我很难过:

我对 valgrind 不是很好,但据我所知,这个跟踪不会回到我的源文件,对吧?事实上,在完整的 valgrind 报告(使用 -v 开关)中没有出现我的源文件,除了在我声明 QApplication 的 main() 中。

那么我可以假设我没有用 CMake 正确编译我的项目吗?希望这就是问题所在,因为 valgrind 报告现在似乎对我没有太大帮助..

现在,在我的 CmakeLists.txt 中,我(尝试)使用调试标志编译项目,如下所示:

这是这样做的正确方法吗?

我在这里做错了吗?

谢谢,抱歉这么长的问题!:/