标签: callstack

Node.js - 超出最大调用堆栈大小

当我运行我的代码时,Node.js抛出"RangeError: Maximum call stack size exceeded"了太多递归调用引起的异常.我试图增加Node.js堆栈大小sudo node --stack-size=16000 app,但Node.js崩溃没有任何错误消息.当我在没有sudo的情况下再次运行时,Node.js打印出来'Segmentation fault: 11'.有没有可能在不删除递归调用的情况下解决这个问题?

谢谢

stack-overflow recursion callstack node.js

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

"RangeError:超出最大调用堆栈大小"为什么?

如果我跑

Array.apply(null, new Array(1000000)).map(Math.random);
Run Code Online (Sandbox Code Playgroud)

在Chrome 33上,我明白了

RangeError: Maximum call stack size exceeded

为什么?

javascript callstack

67
推荐指数
3
解决办法
20万
查看次数

如何在Perl中获得调用堆栈列表?

有没有办法在Perl脚本中的当前位置之前访问(打印输出)子+模块列表到任意深度的子调用?

我需要更改一些Perl模块(.pm).工作流通过cgi脚本从网页启动,通过在我需要使用数据的模块中结束的几个模块/对象传递输入.在某个地方,数据发生了变化,我需要找出原因.

perl callstack stack-trace

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

如何在调用函数时打印它们

在调试Python脚本时,我真的想知道整个程序的整个调用堆栈.一个理想的情况是,如果有一个python的命令行标志会导致Python在调用它们时打印所有函数名称(我检查过man Python2.7,但没有找到这种类型的任何东西).

由于此脚本中的函数数量,如果可能,我不希望在每个函数和/或类的开头添加print语句.

一个中间的解决方案是使用PyDev的调试器,放置几个断点并检查程序中给定点的调用堆栈,所以我暂时会使用这种方法.

如果存在这样的方法,我仍然希望看到在程序的整个生命周期中调用的所有函数的完整列表.

python callstack

60
推荐指数
6
解决办法
3万
查看次数

GAS:.cfi_def_cfa_offset的说明

我想解释一下GCC生成的汇编中.cfi_def_cfa_offset指令使用的值.我隐约知道.cfi指令涉及调用帧和堆栈展开,但我想更详细地解释为什么,例如,在编译以下C程序时GCC输出的汇编中使用值16和8的原因在我的64位Ubuntu机器上.

C程序:

#include <stdio.h>

int main(int argc, char** argv)
{
        printf("%d", 0);
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在源文件test.c上调用了GCC,如下所示:gcc -S -O3 test.c.我知道-O3可以实现非标准优化,但为了简洁起见,我想限制生成的程序集的大小.

生成的程序集:

        .file   "test.c"
        .section        .rodata.str1.1,"aMS",@progbits,1
.LC0:
        .string "%d"
        .text
        .p2align 4,,15
.globl main
        .type   main, @function
main:
.LFB22:
        .cfi_startproc
        subq    $8, %rsp
        .cfi_def_cfa_offset 16
        xorl    %edx, %edx
        movl    $.LC0, %esi
        movl    $1, %edi
        xorl    %eax, %eax
        call    __printf_chk
        xorl    %eax, %eax
        addq    $8, %rsp
        .cfi_def_cfa_offset 8
        ret
            .cfi_endproc
.LFE22:
        .size   main, .-main
        .ident  "GCC: (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2"
        .section        .note.GNU-stack,"",@progbits …
Run Code Online (Sandbox Code Playgroud)

assembly callstack gnu-assembler dwarf

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

如何在Swift中打印调用堆栈?

在Objective-C中,您可以通过执行以下操作来打印调用堆栈:

NSLog(@"%@", [NSThread callStackSymbols]);
Run Code Online (Sandbox Code Playgroud)

如何在不使用Foundation类的情况下在Swift中执行此操作?

debugging callstack swift

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

如何在Node.js中增加最大调用堆栈大小

这与Node中读取RangeError的错误消息的其他问题不同:超出最大调用堆栈大小我知道为什么我收到此错误消息.它正在发生,因为我正在递归,事实上已经发生了相当大的反复.

谢谢.

stack-overflow callstack node.js

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

如何在Eclipse的Eclipse调试视图中过滤调用堆栈

在调试时,Eclipse中的Debug视图显示调用堆栈.哪个好.但是我希望能够过滤掉我绝对不关心的所有调用,例如Spring和JUnit runner.

这是我现在调用堆栈的一个例子.我想把这些条目保持为粗体,同时隐藏所有其他条目.有可能以任何方式吗?(插件,下一个Eclipse发行版,配置......)

com.myproject.mymodule.MyFinderObject.fetchDestinationSettings
com.myproject.mymodule.MyFinderObject.compareCurrentSettings
com.myproject.mymodule.MyFinderObject.compareSettings
sun.reflect.NativeMethodAccessorImpl.invoke0
sun.reflect.NativeMethodAccessorImpl.invoke
sun.reflect.DelegatingMethodAccessorImpl.invoke
java.lang.reflect.Method.invoke
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
com.myproject.caching.CachingInterceptor.invoke
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
org.springframework.aop.framework.JdkDynamicAopProxy.invoke
$Proxy43.doSthWith
com.myproject.mymodule.MyFinderObjectTest.testSettingComparisonForCurrentSettings
sun.reflect.NativeMethodAccessorImpl.invoke0
sun.reflect.NativeMethodAccessorImpl.invoke
sun.reflect.DelegatingMethodAccessorImpl.invoke
java.lang.reflect.Method.invoke
com.myproject.mymodule.MyFinderObjectTest
com.myproject.mymodule.MyFinderObjectTest
com.myproject.mymodule.MyFinderObjectTest
junit.framework.TestResult$1.protect
junit.framework.TestResult.runProtected
junit.framework.TestResult.run
com.myproject.mymodule.MyFinderObjectTest
junit.framework.TestSuite.runTest
junit.framework.TestSuite.run
org.junit.internal.runners.JUnit38ClassRunner.run
org.eclipse.jdt.internal.junit4.runner.JUnit4TestMethodReference
org.eclipse.jdt.internal.junit.runner.TestExecution.run
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main
Run Code Online (Sandbox Code Playgroud)

java eclipse debugging callstack

38
推荐指数
2
解决办法
4953
查看次数

Chrome有内置的调用堆栈吗?

从Visual Studio,我习惯于在任何断点处显示调用堆栈.Chrome有一个调用堆栈功能,我可以看到断点之前的功能吗?

如果没有,是否有替代品(与Chrome一起使用的第三方解决方案?)开发人员用来查看哪些功能导致了断点?

编辑:要清楚,我希望调用堆栈出现在Chrome的javascript控制台中.

javascript browser callstack google-chrome google-chrome-devtools

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

什么是ESP和EBP寄存器?

我发现ESP寄存器是当前的堆栈指针,而EBP是当前堆栈帧的基本指针.但是,我不明白这些定义(我刚开始学习如何在汇编程序中编写代码).

据我所知,ESP指向堆栈本身,EBP指向堆栈顶部的任何东西.但这些只是我的猜测而且很可能是不正确的.否则,如下所述的声明是什么意思?

MOV EBP, ESP    
Run Code Online (Sandbox Code Playgroud)

编辑:我认为上面的陈述是我书的错字.我认为它应该是EBX而不是EBP

x86 assembly callstack stack-frame

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