Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.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#_Visual Studio 2010_Debugging_C# 4.0_Stack Trace - Fatal编程技术网

C# 为什么堆栈跟踪显示我的开发文件路径?

C# 为什么堆栈跟踪显示我的开发文件路径?,c#,visual-studio-2010,debugging,c#-4.0,stack-trace,C#,Visual Studio 2010,Debugging,C# 4.0,Stack Trace,VisualStudio2010SP1,编译的WCF应用程序,将其放在服务器上,当然,它在第一次运行时出错(最新消息),将堆栈跟踪输出到日志文件 它看到了通往我的开发环境的道路。为什么?这是因为我将其部署为调试版本而不是发布版本,还是有其他原因,还是不管怎样,我都应该更加小心地输出堆栈跟踪 04/09/2012 03:58:46: Error: Object reference not set to an instance of an object. at App1.Logging.Log

VisualStudio2010SP1,编译的WCF应用程序,将其放在服务器上,当然,它在第一次运行时出错(最新消息),将堆栈跟踪输出到日志文件


它看到了通往我的开发环境的道路。为什么?这是因为我将其部署为调试版本而不是发布版本,还是有其他原因,还是不管怎样,我都应该更加小心地输出堆栈跟踪

04/09/2012 03:58:46: Error: Object reference not set to an instance of an object.    at App1.Logging.LogMessageToFile(String msg, Boolean isUsingClickOnceApp) in C:\Users\robcube\Documents\Visual Studio 2010\Projects\AppWebService\App1\Logging.cs:line 63
   at App1.App1Main.ConnectWebService(String description) in C:\Users\robcube\Documents\Visual Studio 2010\Projects\AppWebService\App1\International.cs:line 40
04/09/2012 03:58:46: Error: Object reference not set to an instance of an object.    at App1.App1Main.UpdateActivityLog(String data, String userName, Boolean deleteData, Int64 firstId, Int64 lastId, String changeType) in C:\Users\robcube\Documents\Visual Studio 2010\Projects\AppWebService\App1\App1Main.cs:line 641
谢谢,
-rob

在调试模式下部署时,将原始源文件路径存储在PDB()文件中是正常的。

这是因为您复制了.PDB文件以及可执行文件。CLR将在生成堆栈跟踪时查找它们,以尽可能多地提供有关跟踪中堆栈帧的信息。.pdb存储源文件名和行号


您应该部署代码的发布版本。这使得优化能够使代码运行得更快。您仍然可以复制该版本的.pdb文件,它们通常会删除调试信息。项目+属性,切换到发布版本、版本、高级、“调试信息”设置。这里发布版本的正常设置是“仅pdb”,而不是“完整”。这意味着不包括源文件和行号。这是有道理的,在抖动优化了代码之后,堆栈跟踪往往有点不可靠。

“这是因为我将其部署为调试”就像Amiram所说的,您看到调试路径是因为它是在调试中编译的,@Cocowalla可能是重复的——这两个答案都很好。感谢各位的深入解释。我意识到我应该使用发布版本,但如果您不使用TFS或某个开发生命周期,您可以忘记这个小事实。;-)