Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调试断言失败:C++;C#应用程序中的异常?_C#_C++_Printf_Release - Fatal编程技术网

调试断言失败:C++;C#应用程序中的异常?

调试断言失败:C++;C#应用程序中的异常?,c#,c++,printf,release,C#,C++,Printf,Release,我一直在管理和更新一个特定的应用程序。它很旧,我不是最初的开发者。多年来,除了其他小补丁之外,它还经历了多次调试 在过去的几个月里,它一直在稳定运行,但随后发生了一个异常,这对我来说似乎很奇怪。因为这只发生在发布模式下的服务器(它是一个服务器应用程序)上 该应用程序是用C#编写的,在Visual Studio 2012 Professional中进行管理,并发布为显式32位.NET 3.5,因为服务器不幸运行的是Windows 2003。(我试图说服他们进行更新,以便将应用程序更新到.NET 4

我一直在管理和更新一个特定的应用程序。它很旧,我不是最初的开发者。多年来,除了其他小补丁之外,它还经历了多次调试

在过去的几个月里,它一直在稳定运行,但随后发生了一个异常,这对我来说似乎很奇怪。因为这只发生在发布模式下的服务器(它是一个服务器应用程序)上

该应用程序是用C#编写的,在Visual Studio 2012 Professional中进行管理,并发布为显式32位.NET 3.5,因为服务器不幸运行的是Windows 2003。(我试图说服他们进行更新,以便将应用程序更新到.NET 4.5。但遗憾的是。)

<>我得到了一个C++调试消息。请参见下面的屏幕截图。它出现在第91行名为vsprintf.c的文件中。唯一能给我提示的信息是格式!=空

然而,这让我感到困惑。这可能是什么原因造成的?在这种情况下,我最好采取什么步骤进行调试?什么是“vsprintf.c”

编辑:我设法在eventviewer中找到了一些东西。在此期间,我将继续对此进行研究

真诚地


me.

这是一个断言失败,即假设您正在调用的函数不满足,在这种情况下,指针不为null。从外观上看,它是一个格式字符串。您是否直接使用格式字符串?如果是的话,看看那里。如果不是,这可能是内存泄漏问题,然后是内存不足故障。

vsprintf
调用可能是由
sprintf
和其他派生函数引起的,您可能应该检查所有这些调用。(这也可以是字符串类的方法,正如我在VCL中看到的)

如果该错误不是由您使用的某个库引起的,则format string参数中应该有一个
NULL
(或
0
),这通常是原型中
之前的最后一个


如果您熟悉,这在查找模式时可能会有很大帮助。

vsprintf
是一个标准函数。您需要检查调用堆栈。感谢您的快速回复,但我无法在开发机器上复制此内容。服务器管理员还没等我亲自查看就重新启动了应用程序。@Simple他怎么能用assert这样做呢?另一方面,与此同时,DavideNgueyen似乎在重现该问题方面取得了一些进展……我通过查看VM管理器[+1]中的内存使用图,排除了内存泄漏的可能@戴维登盖恩:那么你就可以在你的开发机器上复制这个——如果你产生足够的负载?这不太可能,因为服务器机器的物理内存超过16GB,虚拟机的内存超过4GB。(这就足够了。)而我的开发系统有一个有效的3GB内存,因为它运行Windows7 32位。我们为其他应用程序使用旧的ODBC驱动程序与石器时代的UNIMS数据源进行通信。奇怪的是,这个错误是一次性的,到目前为止还没有再次发生。我没有测试用例,在我们的并行测试环境中没有任何异常情况发生。此外,应用程序被测量为在.NET默认最大内存中运行。我以前也有过这样的问题,通过一个修复程序对它进行了扩展,并解决了以前内存膨胀的问题。应用程序在峰值时使用的内存不足900 MB。(这在公司内部很常见。)这是一个内存膨胀,是的。我正在检查代码,但我怀疑我是否能找到任何让我觉得奇怪的东西。@DavideNguyen你有没有发现任何直接调用函数名中有
sprintf
?没有,完整的搜索没有显示任何对sprintf或vsprintf的调用。@DavideNguyen我明白了。您的应用程序是否使用格式化输出?您指的是string.Format功能以及StringBuilder?那样的话,是的。它将数据库订单转换为EDI文本格式文件,我们将其导入ERP。