标签: stack-trace

如何在StackTrace中获取.NET中抛出的异常中的行号以显示

MSDN说这个关于该类的StackTrace属性Exception:

StackTrace属性包含堆栈跟踪,您可以使用它来确定错误发生在代码中的哪个位置.StackTrace列出了异常之前的所有被调用方法以及进行调用的源中的行号.

所以我知道这些信息是可用的.如何获得实际显示在堆栈跟踪中的行号?我的代码在一个非常困难和复杂的代码中抛出一个异常,它通过TONS的对象,所以我不想经过几十年的时间来查看异常发生的位置.异常的堆栈跟踪仅显示方法签名而不显示行号.

.net c# exception stack-trace

33
推荐指数
4
解决办法
4万
查看次数

Android中的墓碑是什么?

我在网上搜索了关于android中的Tombstones.我找不到任何可以理解的消息来源.我想知道android中的墓碑是什么?

android stack-trace adb android-logcat android-debug

32
推荐指数
0
解决办法
3万
查看次数

如何获取非当前线程的堆栈跟踪?

可以使用System.Diagnostics.StackTrace获取堆栈跟踪,但必须暂停线程.暂停和恢复功能已经过时,所以我希望存在更好的方法.

.net debugging multithreading stack-trace visual-studio-debugging

31
推荐指数
5
解决办法
1万
查看次数

我怎样才能调用缓冲区溢出?

我有一个家庭作业,要求我使用缓冲区溢出调用函数而不显式调用它.代码基本上是这样的:

#include <stdio.h>
#include <stdlib.h>

void g()
{
    printf("now inside g()!\n");
}


void f()
{   
    printf("now inside f()!\n");
    // can only modify this section
    // cant call g(), maybe use g (pointer to function)
}

int main (int argc, char *argv[])
{
    f();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

虽然我不知道该怎么办.我想改变程序计数器的返回地址,以便它直接进入g()的地址,但我不知道如何访问它.无论如何,提示将是伟大的.

c pointers buffer-overflow stack-trace fortify-source

31
推荐指数
3
解决办法
8843
查看次数

来自未处理异常的c ++堆栈跟踪?

之前已经问过这个问题,并且有特定于Windows的答案,但没有令人满意的gcc答案.我可以set_terminate()用来设置一个函数,terminate()当抛出未处理的异常时,该函数将被调用(代替).我知道如何使用backtrace库从程序中的给定点生成堆栈跟踪.但是,当我的终止替换被调用时,这将无济于事,因为此时堆栈已被解除.

然而,如果我只是允许程序abort(),它将产生一个核心转储,其中包含从抛出异常的点开始的完整堆栈信息.所以信息就在那里 - 但是有没有一种编程方式来获取它,例如它可以被记录,而不是必须检查核心文件?

c++ callstack exception-handling stack-trace unhandled-exception

31
推荐指数
1
解决办法
2万
查看次数

将调用函数的名称打印到调试日志中

Objective-C的运行时似乎相当健壮,所以我想知道是否有办法记录调用当前函数的函数的名称(用于调试目的).

我的情况是,一堆东西分配给一个属性,而不是每次都设置一个断点并检查调用堆栈,我想只是NSLog设置属性的函数的名称,以及新值.

那么可以在运行时访问调用堆栈吗?

debugging objective-c stack-trace

31
推荐指数
2
解决办法
9992
查看次数

使用promises - 在失败处理程序中记录堆栈跟踪

我对nodejs比较新,所以我将更详细地解释一下我想做什么.

我有一个网络服务器.如果请求失败,我想记录该异常的堆栈跟踪,但是提供错误页面而不是使服务器崩溃.

例如,处理请求的函数:

var Q = require('q');

var requestHandler = function () {
    // Here I get the data etc. that was requested. As this is not important, just a dummy here
    Q.resolve()
        // Now I answer the request
        .then(function (data) {
            // Dummy Code representing the sending of a response
            console.log('sending response …');
            console.log('oh no! an exception');
            // Now an Exception occurs
            throw new Error('You did something wrong!');
        })
        // If there was any error, show the error page …
Run Code Online (Sandbox Code Playgroud)

javascript stack-trace node.js promise q

31
推荐指数
1
解决办法
1万
查看次数

Log4j格式化:是否可以截断堆栈跟踪?

我想在我的程序中只记录Exceptions的前几行.我知道,我可以做这样的事情只打印堆栈跟踪的前5行:

Throwable e = ...;
StackTraceElement[] stack = e.getStackTrace();
int maxLines = (stack.length > 4) ? 5 : stack.length;
for (int n = 0; n < maxLines; n++) {
    System.err.println(stack[n].toString());
}
Run Code Online (Sandbox Code Playgroud)

但我宁愿使用log4j(或更精确的log4j上的slf4j)进行日志记录.有没有办法告诉log4j它应该只打印堆栈跟踪的前5行?

java logging log4j stack-trace

30
推荐指数
3
解决办法
2万
查看次数

停止在WebAPI中显示整个堆栈跟踪

WebAPI用户发生意外错误时,会看到整个堆栈跟踪.

我相信显示整个堆栈跟踪是不安全的.

停止向我的用户显示整个跟踪的默认行为是什么?

只是一个友好的信息,就像说Internal Server Error一个人就够了.正确?

有什么想法?

<?xml version="1.0"?>
<Error>
  <Message>An error has occurred.</Message>
  <ExceptionMessage>The method or operation is not implemented.</ExceptionMessage>
  <ExceptionType>System.NotImplementedException</ExceptionType>
  <StackTrace>   at MyCompany.BLL.RequirementOfService.Employee1.Employee1Service.MakeRequirementOfService(RequirementOfService RequirementOfService) in d:\Projects\MyFolder\Testing\WhiteBox\MyCompany.BAL.RequirementOfService\Employee1\Employee1Service.cs:line 37
   at MyCompany.BLL.RequirementOfService.RequirementOfServiceBLL.MakeRequirementOfService(RequirementOfService RequirementOfService) in d:\Projects\MyFolder\Testing\WhiteBox\MyCompany.BAL.RequirementOfService\RequirementOfServiceBLL.cs:line 76
   at MyCompany.RequirementOfService.Windsor.RequirementOfServiceProvider.MakeRequirementOfService(RequirementOfService RequirementOfService) in d:\Projects\MyFolder\Testing\WhiteBox\MyCompany.RequirementOfService\Windsor\RequirementOfServiceProvider.cs:line 47
   at MyCompany.RequirementOfService.RequirementOfService.Controllers.RequirementOfServiceController.Post(RequirementOfServiceDTO RequirementOfServiceDTO) in d:\Projects\MyFolder\Testing\WhiteBox\MyCompany.RequirementOfService\RequirementOfService\Controllers\RequirementOfServiceController.cs:line 87
   at lambda_method(Closure , Object , Object[] )
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.&lt;&gt;c__DisplayClass10.&lt;GetExecutor&gt;b__9(Object instance, Object[] methodParameters)
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
--- End of stack trace …
Run Code Online (Sandbox Code Playgroud)

.net c# stack-trace asp.net-web-api asp.net-web-api2

30
推荐指数
2
解决办法
1万
查看次数

GCC中地址消毒剂的有意义的堆栈跟踪

我只是尝试用GCC和-fsanitize=address旗帜进行编译.当我运行我的程序时,地址清理程序发现了一个缺陷,但堆栈跟踪没有帮助.如何配置它以使其指向我需要查看的源代码位置?

=================================================================
==32415== ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6006004b38a0 at pc 0x10b136d5c bp 0x7fff54b8e5d0 sp 0x7fff54b8e5c8
WRITE of size 8 at 0x6006004b38a0 thread T0
    #0 0x10b136d5b (/Users/cls/workspace/NetworKit/./NetworKit-Tests-D+0x1000c6d5b)
    #1 0x10b136e0c (/Users/cls/workspace/NetworKit/./NetworKit-Tests-D+0x1000c6e0c)
    #2 0x10b138ef5 (/Users/cls/workspace/NetworKit/./NetworKit-Tests-D+0x1000c8ef5)
    #3 0x10b137a2e (/Users/cls/workspace/NetworKit/./NetworKit-Tests-D+0x1000c7a2e)
    #4 0x10b13acf2 (/Users/cls/workspace/NetworKit/./NetworKit-Tests-D+0x1000cacf2)
    #5 0x10b253647 (/Users/cls/workspace/NetworKit/./NetworKit-Tests-D+0x1001e3647)
    #6 0x10b24ee55 (/Users/cls/workspace/NetworKit/./NetworKit-Tests-D+0x1001dee55)
    #7 0x10b237108 (/Users/cls/workspace/NetworKit/./NetworKit-Tests-D+0x1001c7108)
    #8 0x10b237c17 (/Users/cls/workspace/NetworKit/./NetworKit-Tests-D+0x1001c7c17)
    #9 0x10b2385c9 (/Users/cls/workspace/NetworKit/./NetworKit-Tests-D+0x1001c85c9)
    #10 0x10b23f659 (/Users/cls/workspace/NetworKit/./NetworKit-Tests-D+0x1001cf659)
    #11 0x10b254951 (/Users/cls/workspace/NetworKit/./NetworKit-Tests-D+0x1001e4951)
    #12 0x10b24fbeb (/Users/cls/workspace/NetworKit/./NetworKit-Tests-D+0x1001dfbeb)
    #13 0x10b23dc38 (/Users/cls/workspace/NetworKit/./NetworKit-Tests-D+0x1001cdc38)
    #14 0x10b229d28 (/Users/cls/workspace/NetworKit/./NetworKit-Tests-D+0x1001b9d28)
    #15 0x10b229bda (/Users/cls/workspace/NetworKit/./NetworKit-Tests-D+0x1001b9bda)
    #16 0x7fff8b7785fc (/usr/lib/system/libdyld.dylib+0x35fc)
    #17 0x2
0x6006004b38a0 …
Run Code Online (Sandbox Code Playgroud)

c++ memory gcc stack-trace address-sanitizer

28
推荐指数
3
解决办法
1万
查看次数