我的项目包含很多带有表单的页面.这是银行CRM系统的后端,因此可以捕获和调查工作过程中的任何错误.在服务器端,我们有增强的java异常系统,但是如果在客户端发生错误 - javascript我们现在获得的唯一信息是IE中的js-error窗口,或者有时是高级用户制作的页面截图.
Javascript代码包含Jquery支持的UI扩展和硬编码的内联事件处理程序和函数.
所以我问是否可以使用任何捕获任何类型的js-errors的方法?一些额外的库或某些东西可以给我一个像Mozilla中的firebug或Chrome中的web控制台的堆栈跟踪?
我正在运行Django 1.0,我即将部署我的应用程序.因此,我将把DEBUG设置更改为False.
话虽如此,我仍然希望在发生错误时将堆栈跟踪包含在我的500.html页面上.通过这样做,用户可以复制并粘贴错误,并轻松地通过电子邮件将其发送给开发人员.
有关如何最好地解决这个问题的任何想法?
在我使用StackTrace的代码中发生了一些奇怪的事情.这几乎就像没有加载调试信息一样......但是我在DEBUG构建中运行它..pdb文件在bin目录中是最新的并且是最新的.我已经严重失去了思想:
public class TraceHelper
{
private static IDictionary<string,int> TraceDictionary = new Dictionary<string,int>();
public TraceHelper(int duration)
{
...
TraceDictionary[InternalGetCallingLocation()]+=duration;
...
}
public static string InternalGetCallingLocation ()
{
var trace = new System.Diagnostics.StackTrace();
var frames = trace.GetFrames();
var filename = frames[1].GetFileName(); //<<-- this always returns null
return frames[0].ToString(); //this returns:
// "InternalGetCallingLocation at offset 99 in file:line:column <filename unknown>:0:0"
}
}
Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个C#应用程序,它已经拥有了自己的日志记录.抛出异常时,异常将保存到列表中,用户可以通过列表视图查看该列表.当用户在列表视图中单击异常时,异常的堆栈跟踪将显示在文本框中.但即使我在远程计算机上执行程序,堆栈跟踪也会显示从编译应用程序的计算机到原始源文件的文件路径.
例如:
at C:\Folder1\Folder2\Class1.cs:81
at C:\Folder1\Folder2\Class2.cs:65
at C:\Folder1\Folder1\Class3.cs:21
Run Code Online (Sandbox Code Playgroud)
只显示没有文件夹的源文件会很好......
我该如何改变这种行为?
有原生解决方案吗?或者我只需要做一些字符串操作?
是否有任何工具可以提取出现在日志文件中的堆栈跟踪列表,并且可能会计算唯一的堆栈跟踪列表?
编辑:我会做一些不基于GUI的东西,并在后台运行并提供某种报告.我从很多环境收集了很多日志,只是想快速浏览一下.
在修补这个问题的答案的同时,我发现当从内部调用时,debug_backtrace()不会超出注册的函数register_shutdown_function().
这是中提到此评论为register_shutdown_function()在PHP文档,指出:
您可以从关闭函数内部调用debug_backtrace或debug_print_backtrace,以跟踪致命错误发生的位置.不幸的是,这些功能在关机功能中不起作用.
更详细地解释一下,对这个答案状态的评论:
不行.堆栈取消后会发生关闭功能.没有要转储的堆栈信息.
有没有办法绕过这个,迫使PHP保持堆栈跟踪直到进程完全终止,或者我们应该接受它作为给定由于PHP内部?
术语"调用堆栈"和"堆栈跟踪"之间有什么区别?
我正在调试一个明显的并发问题,这是一个我在工作中遇到的大应用程序.有问题的错误仅在运行了许多(12+)小时后出现在某些性能较低的机器上,我从未在调试器中重现它.因此,我的调试工具基本上只限于分析日志文件.
C#可以很容易地获得抛出异常的线程的堆栈跟踪,但是我还想在抛出异常时另外获取当前在我的AppDomain中执行的每个其他线程的堆栈跟踪.
这可能吗?
如何在不获取堆栈跟踪的情况下获取异常名称?
我exception.toString()用来将抛出的异常转换为字符串,但我只想要异常名称,NullPointerException而不是整个堆栈跟踪.
我怎么解决这个问题?
stack-trace ×10
c# ×3
exception ×3
java ×2
.net ×1
asp.net ×1
callstack ×1
concurrency ×1
debugging ×1
django ×1
javascript ×1
jquery ×1
logging ×1
perl ×1
php ×1
python ×1
reflection ×1
string ×1
templates ×1