标签: traceback

当我告诉它时,如何使用Django的记录器记录回溯?

try:
    print blah
except KeyError:
    traceback.print_exc()
Run Code Online (Sandbox Code Playgroud)

我曾经像这样调试.我打印到控制台.现在,我想记录所有内容而不是打印,因为Apache不允许打印.那么,如何记录整个回溯?

python django logging traceback

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

获得完整的追溯

如何在以下情况下获得完整的回溯,包括调用func2func函数?

import traceback

def func():
    try:
        raise Exception('Dummy')
    except:
        traceback.print_exc()

def func2():
    func()


func2()
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到:

Traceback (most recent call last):
  File "test.py", line 5, in func
    raise Exception('Dummy')
Exception: Dummy
Run Code Online (Sandbox Code Playgroud)

traceback.format_stack()不是我想要的,因为需要将traceback对象传递给第三方模块.

我对这个案子特别感兴趣:

import logging


def func():
    try:
        raise Exception('Dummy')
    except:
        logging.exception("Something awful happened!")


def func2():
    func()


func2()
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我得到:

ERROR:root:Something awful happened!
Traceback (most recent call last):
  File "test.py", line 9, in func
    raise Exception('Dummy')
Exception: Dummy
Run Code Online (Sandbox Code Playgroud)

python traceback

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

当我在响应中提出自己的异常时,如何更容易地抑制先前的异常?

考虑

try:
   import someProprietaryModule
except ImportError:
   raise ImportError('It appears that <someProprietaryModule> is not installed...')
Run Code Online (Sandbox Code Playgroud)

运行时,如果未安装someProprietaryModule,则可以看到:

(traceback data)
ImportError: unknown module: someProprietaryModule

During handling of the above exception, another exception occurred:

(traceback data)
ImportError: It appears that <someProprietaryModule> is not installed...
Run Code Online (Sandbox Code Playgroud)

也许我不希望出现"在处理上述异常......"行(以及它上面的行).我能做到这一点:

_moduleInstalled = True
try:
   import someProprietaryModule
except ImportError:
   _moduleInstalled = False
if not _moduleInstalled: 
   raise ImportError('It appears that <someProprietaryModule> is not installed...')
Run Code Online (Sandbox Code Playgroud)

但这感觉有点像黑客.我还能做什么?

python exception traceback python-3.x python-3.3

24
推荐指数
1
解决办法
4439
查看次数

Python:如何格式化回溯对象

我有一个traceback对象,我希望以调用时得到的漂亮格式显示traceback.format_exc().

这有内置函数吗?还是几行代码?

python format object traceback

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

如何在引发异常时修改Python跟踪对象?

我正在研究第三方开发人员使用的Python库,为我们的核心应用程序编写扩展.

我想知道是否可以在引发异常时修改回溯,因此最后一个堆栈框架是在开发人员代码中调用库函数,而不是引发异常的库中的行.堆栈底部还有一些框架,其中包含对第一次加载我理想情况下要移除的代码时使用的函数的引用.

提前感谢任何建议!

python traceback

21
推荐指数
4
解决办法
7881
查看次数

在Ctrl-C上删除Python中的回溯

当你点击Ctrl+ c,即KeyboardInterrupt在Python脚本中加注时,有没有办法让追溯不会出现?

python keyboardinterrupt traceback

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

如何在Python 2中模仿Python 3的引发?

Python 3很整洁

try:
    raise OneException('sorry')
except OneException as e:
    # after a failed attempt of mitigation:
    raise AnotherException('I give up') from e
Run Code Online (Sandbox Code Playgroud)

允许在不丢失上下文的情况下引发后续异常的语法.我在Python 2中可以提出的最好的比喻是

raise AnotherException((e,'I give up')), None, sys.exc_info()[2]
Run Code Online (Sandbox Code Playgroud)

(e,'')是一个丑陋的黑客,它将原始异常的名称包含在消息中.但是不是有更好的方法吗?

exception raise traceback python-2.7 python-3.x

21
推荐指数
2
解决办法
5822
查看次数

如何使用Python记录当前行和堆栈信息?

我有如下记录功能.

logging.basicConfig(
    filename = fileName,
    format = "%(levelname) -10s %(asctime)s %(message)s",
    level = logging.DEBUG
)

def printinfo(string):
    if DEBUG:
        logging.info(string)

def printerror(string):
    if DEBUG:
        logging.error(string)
    print string
Run Code Online (Sandbox Code Playgroud)

我需要登录行号,堆栈信息.例如:

1: def hello():
2:    goodbye()
3:
4: def goodbye():
5:    printinfo()

---> Line 5: goodbye()/hello()
Run Code Online (Sandbox Code Playgroud)

我怎么能用Python做到这一点?

解决了

def printinfo(string):
    if DEBUG:
        frame = inspect.currentframe()
        stack_trace = traceback.format_stack(frame)
        logging.debug(stack_trace[:-1])
    if LOG:
        logging.info(string)
Run Code Online (Sandbox Code Playgroud)

给我这个信息,这正是我需要的.

DEBUG      2011-02-23 10:09:13,500 [
  '  File "/abc.py", line 553, in <module>\n    runUnitTest(COVERAGE, PROFILE)\n', 
  '  File "/abc.py", line 411, in runUnitTest\n …
Run Code Online (Sandbox Code Playgroud)

python logging traceback

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

使用嵌入式lua从C代码打印stacktrace

如果我理解正确,默认情况下Lua会在发生错误时调用调试库"debug.traceback".

但是,当将Lua嵌入到C代码中时,就像这里的示例中所做的那样: 简单的Lua API示例

我们只在堆栈顶部提供错误消息.

if (status) {
    /* If something went wrong, error message is at the top of */
    /* the stack */
    fprintf(stderr, "Couldn't load file: %s\n", lua_tostring(L, -1));

    /* I want to print a stacktrace here. How do I do that? */
    exit(1);
}
Run Code Online (Sandbox Code Playgroud)

初始错误后如何从C打印堆栈跟踪?

lua stack-trace traceback lua-api

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

如何以编程方式检查Python中异常的堆栈跟踪?

当Python中发生异常时,您可以检查堆栈吗?你能确定它的深度吗?我查看了traceback模块,但我无法弄清楚如何使用它.

我的目标是捕获在解析eval表达式期间发生的任何异常,而不会捕获它可能调用的任何函数抛出的异常.不要因为使用eval而责备我.这不是我的决定.

注意:我想以编程方式而不是交互方式执行此操作.

python exception-handling stack-trace traceback

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