打印python的堆栈stack

import sys

def pstack(depth = 0):
    frame = sys._getframe(depth)
    cnt = 0
    while frame:
        print "###", cnt, frame.f_code.co_name, frame.f_code.co_filename, frame.f_lineno
        frame = frame.f_back
        cnt = cnt + 1

def test():
    pstack(0)
    print "-"*20
    pstack(1)

if __name__ == "__main__":
    test()
时间: 2024-11-10 08:09:11

打印python的堆栈stack的相关文章

java中堆栈(stack)和堆(heap)

原文地址:http://blog.csdn.net/jerryao/article/details/874101 1.内存分配策略 按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的. (1)静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求 (2)栈式存储分配也可称为动态存储分配,是由一个类似于堆栈的运行栈来实现的.和静态存储分配相反,在栈式存储方案中,程序对数据区的需求在编译时是完全未知的,只有到运行的时候才能够知道,但是规定在运行中进入一个

java中堆栈(stack)和堆(heap)(还在问静态变量放哪里,局部变量放哪里,静态区在哪里.....进来)

(1)内存分配的策略 按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的. 静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编 译时就可以给他们分配固定的内存空间.这种分配策略要求程序代码中不允许有可变数据结构(比如可变数组)的存在,也不允许有嵌套或者递归的结构出现,因为 它们都会导致编译程序无法计算准确的存储空间需求. 栈式存储分配也可称为动态存储分配,是由一个类似于堆栈的运行栈来实现的.和静态存 储分配相反,在栈式存储方案中,程序对

打印python包含汉字报SyntaxError: Non-ASCII character '\xe4' in file

因为本人主要使用Scala语言,但是之前同事包括老大都是使用python,加上python在spark的使用中的确越来越受欢迎,所以最近准备入坑python,但是装完写demo的时候出了问题,如下: 查了下发现,这是python编码的问题, python中默认的编码格式是ASCII格式, 所以在没修改编码格式时无法正确打印汉字. 解决办法: 在以后的每一个需要显示汉字的python文件中, 可以采用如下方法在 #!/usr/bin/python的下一行加上一句话来定义编码格式 参考文档:http

slf4j如何打印java异常堆栈信息throwable对象

SLF4J 1.6.0 以前的版本,如果打印异常堆栈信息,必须用 log.error(String msg, Throwable t) log.info等对应方法. 如果msg含有变量,一般用String.format方法格式化msg. 如果用 error(String format, Object... arguments) 等其它方法,异常堆栈信息会丢失. 幸好,SLF4J 1.6.0以后的版本对这个不友好的异常信息log 改进了. error(String format, Object..

GDB 获取python程序堆栈

在调试python程序时,经常需要从gdb attach上去,跟踪stack信息. 虽然DebuggingWithGdb[https://wiki.python.org/moin/DebuggingWithGdb]提供了不错的方法,但是某些情况下还是需要gdb原始操作的. typedef struct { PyObject_HEAD int co_argcount; /* #arguments, except *args */ int co_nlocals; /* #local variable

在linux代码中打印函数调用的堆栈的方法

之前一直有这样的需求,当时问到,也没搜到方法,现在竟然既问到了,也搜到了,哎,世事真是不能强求啊! 在Linux内核调试中,经常用到的打印函数调用堆栈的方法非常简单,只需在需要查看堆栈的函数中加入: dump_stack();或 __backtrace();即可. dump_stack()在~/kernel/ lib/Dump_stack.c中定义 void dump_stack(void){ printk(KERN_NOTICE  "This architecture does not imp

使用Go语言实现堆栈(Stack)

今天用Go实现了一个Stack, 提供了如下方法: //放入元素 func (stack *Stack)Push(value ...interface{}) //返回下一个元素 func (stack *Stack)Top()(value interface{}) //返回下一个元素,并从Stack移除元素 func (stack *Stack)Pop()(err error) //交换Stack func (stack *Stack)Swap(other *Stack) //修改指定索引的元素

java集合框架:浅谈如何使用LInkedList实现队列(Queue)和堆栈(Stack)

Java中的LinkedList?是采用双向循环列表实现的.利用LinkedList?可以实现栈(stack).队列(queue) 下面写两个例子学生类:int stuId; public int getStuId() { return stuId; } public void setStuId(int stuId) { this.stuId = stuId; } public String getStuName() { return stuName; } public void setStuN

Slf4j打印异常的堆栈信息

1.前言 直接用logger.info("异常信息为:"+e)或者logger.info(e.getMessage())只能记录到异常的描述信息,却没有其异常具体发生在哪一行代码.这样即使通过日志发现出现了异常,也没法马上定位问题.因此就催生了一个想法,打印日志是否能像在IDE本地跑程序时出现未捕获的异常时,控制台能打印出完整的错误堆栈信息. 原文地址:https://www.cnblogs.com/gavincoder/p/10092187.html