标签: callstack

在运行时调用堆栈

我想在Native C++应用程序中运行时访问调用堆栈.我没有使用IDE.如何显示调用堆栈?

更新:我有一个函数,从整个应用程序的许多点调用.它在极少数情况下崩溃.我正在寻找一种方法来获取调用者的名字并记录它.

debugging callstack visual-c++

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

使用Mdbg的ASP.NET基于Web的堆栈转储工具?

MySpace.com的首席系统架构师Dan Farino 发表了精彩的演示,展示了一个基于Web的堆栈转储工具,该工具对在给定流程中运行的所有线程进行编目(他们正在做什么,他们执行了多长时间等等) .)

他们的技术也在highscalability.com上进行了总结:

  • PerfCollector.
    通过UDP集中收集性能数据.比Windows更可靠,允许任何客户端连接和查看统计信息.
  • 基于Web的堆栈转储工具.
    可以右键单击问题服务器并获取.Net托管线程的堆栈转储.用于将RDC导入系统并附加调试器,以后1/2获得答案.缓慢,不稳定,乏味.不仅仅是堆栈转储,还提供了很多关于线程正在做什么的上下文.故障排除更容易,因为您可以看到数据库上有90个线程被阻止,因此数据库可能已关闭.
  • Web Base堆转储工具.
    转储所有内存分配.对开发人员非常有用.节省数小时的手工操作.•Profiler.从头到尾跟踪请求并生成报告.请参阅URL,方法,状态以及有助于您识别慢速请求的所有内容.看看锁争用,抛出很多异常,任何可能有趣的事情.重量很轻.它在生产中的每个VIP(100个服务器组)中的一个盒子上运行.样品每10秒一次.始终在后台跟踪.

问题是:为ASP.NET构建基于Web的堆栈转储工具需要哪些工具?为方便起见,我们假设在目标AppDomain中托管的*.aspx能够输出该进程中的所有托管调用堆栈就足够了.

有一些帖子涵盖了Mdbg的使用(完全用C#/ IL编写的托管代码的调试器,开始随CLR 2 SDK一起提供)和mdbgcore程序集通常位于C:\ Program Files\Microsoft Visual Studio 8\SDK\2.0 \斌:

解决方案是否会简单地引用此组件以产生所需的输出?"列出所有托管调用堆栈"操作对正在为生产流量提供服务的运行进程有什么影响?

asp.net debugging multithreading callstack mdbg

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

如何监控Perl调用堆栈?

我在Windows XP上使用ActivePerl 5.8.

use strict;
use warnings;
use Data::Dumper;
Run Code Online (Sandbox Code Playgroud)

我的脚本中使用了三个子例程.

要检测调用堆栈,我只能插入一些print "some location";并从控制台窗口检查打印结果.

有什么好方法可以监控它吗?谢谢.

perl callstack

5
推荐指数
3
解决办法
2102
查看次数

递归表达式的R警告消息:如果失败,请尝试再试一次

我想创建一个函数,如果失败,将重试表达式.这是我的工作版本:

retry <- function(.FUN, max.attempts=3, sleep.seconds=1) {
  x <- NULL
  if(max.attempts > 0) {
    f <- substitute(.FUN)
    x <- try(eval(f))
    if(class(x) == "try-error") {
      Sys.sleep(sleep.seconds)
      return(suppressWarnings(retry(.FUN, max.attempts-1)))
    }
  }
  x
}

retry(stop("I'm here"))
Run Code Online (Sandbox Code Playgroud)

如果我删除suppressWarnings()上面的函数,那么每次递归调用都会收到一组警告.有谁知道我做错了会导致什么?

这是一个可以重复运行的示例:

retry({ tmp <- function() { if(rnorm(1) < 0) stop("I'm here") else "success" }; tmp() })
Run Code Online (Sandbox Code Playgroud)

recursion callstack r try-catch substitution

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

未处理 Windows 服务异常

我有基于类 ServiceBase 的常规 C# 服务。此服务在启动时加载 c++ 动态链接库。有时会发生服务在非托管代码中崩溃。不幸的是,事件查看器仅对此进行了非常简短的描述。如果他的消息是这样的:

应用程序:StreamMapService.exe 框架版本:v4.0.30319 描述:由于未处理的异常,进程被终止。异常信息:异常代码 c0000005,异常地址 00000012"。

99% 确定问题出在非托管代码中。问题是这种情况很少发生(通常每天一次),并且仅在作为服务运行时发生。在调试器下一切正常。为了找出有问题的代码,我按以下方式编辑了我的主要方法:

    static void Main()
    {
        try
        {
            if (!Environment.UserInteractive)
            {
                ServiceBase[] ServicesToRun;
                ServicesToRun = new ServiceBase[] 
                { 
                    new Service1() 
                };
                ServiceBase.Run(ServicesToRun);
            }
            else
            {
                var services = new Service1();
                services.Start();
                Console.WriteLine("Press return to exit");
                Console.ReadLine();
                services.Stop();
            }
        }
        catch (SEHException e)
        {
            // wrapper for all exceptions having its origin in unmanaged code
            StringBuilder sb = new StringBuilder();
            sb.AppendFormat("Crash time: {0}\n", DateTime.Now.ToString());
            sb.AppendFormat("\nMessage:\n{0}", e.Message);
            sb.AppendFormat("\nSource: {0}\n", e.Source); …
Run Code Online (Sandbox Code Playgroud)

c# service callstack exception-handling unmanaged

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

获取调用堆栈的大小

有没有办法在 C++ 中获取调用堆栈的大小(以字节为单位)?
或者至少是它的底部地址(然后我可以从 ESP 寄存器中减去它?

c++ windows callstack

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

在javascript中获取导致错误的callstack

问题是没有得到一般的callstack,这可以按照这里描述的方式完成:http: //eriwen.com/javascript/js-stack-trace/ ,而是访问触发事件的callstack,来自处理程序事件.

特别是我有兴趣从窗口错误事件中记录callstack

window.onerror = function(msg, url, line) { 
 //callstack // would be nice to have.
//log callstack or whatever. (note this can be done w/ ajax and service, and is not the question at hand.
}
Run Code Online (Sandbox Code Playgroud)

但我知道如何记录错误.(我使用jquery .ajax和服务)

浏览器能否实现这一目标?目前有可能吗?也许我会以错误的方式解决这个问题.如何添加一个简单的函数(即不修改我的代码库中的所有函数)来检测何时出现错误,并记录调用堆栈.

到目前为止,感谢您的答案,如果问题最初措辞不当,那就很抱歉.

javascript error-handling callstack

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

在C++中动态创建函数调用

大家好,我希望你帮我解决这个问题:

我目前正在为脚本语言实现一个解释器.该语言需要一个C函数的本机调用接口,比如java有JNI.我的问题是,我想调用原始的C函数而不编写包装函数,它将我的脚本语言的调用堆栈转换为C调用堆栈.这意味着,我需要一种方法,在运行时生成C函数的参数列表.例:

void a(int a, int b) {
    printf("function a called %d", a + b);
}

void b(double a, int b, double c) {
    printf("function b called %f", a * b + c);
}

interpreter.registerNativeFunction("a", a);
interpreter.registerNativeFunction("b", b);
Run Code Online (Sandbox Code Playgroud)

解释器应该能够调用函数,只知道我的脚本语言的函数原型:native void a(int a, int b);native void b(double a, int b, double c);

有没有办法在C++中生成C函数调用堆栈,或者我必须使用汇编程序来完成此任务.汇编程序是一个问题,因为解释器应该几乎可以在任何平台上运行.

编辑:解决方案是使用libffi,一个库,处理许多不同平台和操作系统的调用堆栈创建.libffi也被一些着名的语言实现使用,如cpython和openjdk.

编辑:@MatsPetersson我的代码中有一个方法,我有一个方法:

void CInterpreter::CallNativeFunction(string name, vector<IValue> arguments, IReturnReference ret) {
    // Call here correct native C function.
    // this.nativeFunctions is a map which contains the …
Run Code Online (Sandbox Code Playgroud)

c c++ callstack runtime function

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

“调用栈”和“任务队列”的区别

我是一名开发人员,难以区分Call StackTask Queue两个术语。有没有人可以帮我解释一下区别?

提前致谢。

javascript jquery callstack task-queue

5
推荐指数
2
解决办法
6931
查看次数

将函数调用强制转换为字符串

我试图了解callR中的对象是什么,并将其强制转换为角色.然而,到目前为止,我的努力是徒劳的.

myFun=function(a=1) {   x=sys.call()   return(as.character(x)) }

x=myFun(a=2) # here I would like to get the string "myFun(a = 2)"
Run Code Online (Sandbox Code Playgroud)

我一直在寻找打印函数调用的函数(类似的东西print.call).但我找不到它.

这里有人知道如何打印调用对象吗?

callstack r coercion

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