我尝试自定义配方sys.excepthook描述的行为.
在ipython中:
:import pdb, sys, traceback
:def info(type, value, tb):
: traceback.print_exception(type, value, tb)
: pdb.pm()
:sys.excepthook = info
:--
>>> x[10] = 5
-------------------------------------------------
Traceback (most recent call last):
File "<ipython console>", line 1, in <module>
NameError: name 'x' is not defined
>>>
Run Code Online (Sandbox Code Playgroud)
pdb.pm()没有被召唤.它似乎sys.excepthook = info在我的python 2.5安装中不起作用.
在调试我的django应用程序时,我使用pdb进行交互式调试pdb.set_trace().
但是,当我修改文件时,本地django webserver重新启动,然后我无法看到我在终端中输入的内容,直到我输入reset.
无论如何这是自动发生的吗?它可能真的很烦人,必须取消runserver并重置并重新启动它.我被告知它不会发生在其他操作系统(ubuntu)上,所以无论如何都要让它不会发生在Mac上吗?(我正在使用Snow Leopard).
我pdb在GET请求中设置了跟踪.我想打印请求对象的所有属性.我在pdb中尝试以下内容:
(Pdb) request
<GET /foo HTTP/1.1>
(Pdb) for d in dir(request):
*** SyntaxError: unexpected EOF while parsing (<stdin>, line 1)
Run Code Online (Sandbox Code Playgroud)
我相信我在这里缺少一些基本的东西.
我正在使用PostSharp版本2.1.6.4(也尝试了最新版本2.1.7.35),有时pdb文件丢失,并且有一个pssym文件.
<?xml version="1.0" encoding="utf-8"?>
<Symbols xmlns="http://schemas.postsharp.org/2.0/symbols">
<Class Class="#1=T:[CrosscuttingLogging]CrosscuttingLogging.Attributes.LogMethodCallStatsAttribute" LimitedLicense="true" />
<Class Class="#2=T:[RequestLimiter]RequestLimiter.RequestCounterAttribute" LimitedLicense="true" />
</Symbols>
Run Code Online (Sandbox Code Playgroud)
我在构建过程中运行procmon,据我所知,postsharp.srv.4.0-x86.exe进程将dll和pdb文件从obj\Debug文件夹移动到obj\Debug\Before-PostSharp文件夹,然后在文件夹中生成一个新的dll obj\Debug,但是没有生成新的pdb文件.
对于我的一些dll(看似随机)会发生这种情况并且似乎不可靠,因为在其他机器上所有pdb文件都是正确生成的.
我正在尝试使用从另一个stackoverflow问题引用的本教程来学习pdb ,而我正处于"入门"部分的第3步.
In [12]: %paste
# epdb1.py -- experiment with the Python debugger, pdb
import pdb
a = "aaa"
pdb.set_trace()
b = "bbb"
c = "ccc"
final = a + b + c
print final
## -- End pasted text --
--Return--
> <ipython-input-12-48afa1c7ad72>(4)<module>()->None
-> pdb.set_trace()
(Pdb) l
1 # epdb1.py -- experiment with the Python debugger, pdb
2 import pdb
3 a = "aaa"
4 -> pdb.set_trace()
5 b = "bbb"
6 c = "ccc" …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用gdb调试一些Cython代码,这些代码包含要从Python调用的C++代码.我按照文档中的说明进行操作,但是在调试时遇到了一些与我的代码无关的错误.例:
(gdb) cy print some_variable
Python Exception <type 'exceptions.AttributeError'> 'PyDictObjectPtr' object has no attribute 'items':
Error occurred in Python: 'PyDictObjectPtr' object has no attribute 'items'
Run Code Online (Sandbox Code Playgroud)
我有时也会得到这个(通常在第一个之后):
Python Exception <class 'gdb.error'> There is no member named ob_sval.:
Error occurred in Python command: There is no member named ob_sval.
Run Code Online (Sandbox Code Playgroud)
为了调试代码我用Docker创建了一个环境:
FROM debian
RUN apt-get update && apt-get upgrade -y && apt-get install -y \
build-essential gdb-python2 python-dbg python-dev \
python-pip python-numpy-dbg
RUN pip install cython pygments
CMD bash
Run Code Online (Sandbox Code Playgroud)
我在cython-users google …
我正在使用CMake命令安装PDB文件,以便在我的C++应用程序的开发人员分发中启用调试.命令如下:
INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/Debug
DESTINATION bin
FILES_MATCHING
PATTERN *.pdb
)
Run Code Online (Sandbox Code Playgroud)
此外,我已经设法在同一级别的'src'文件夹中安装用于构建开发人员分发的相关源,以便我的顶级分发文件夹看起来像:
include\
src\
lib\
bin\
share\
doc\
3rdparty\
etc\
Run Code Online (Sandbox Code Playgroud)
如何让PDB文件"知道"源的位置(我假设这是必需的)?是否有可以实现此目的的CMake命令?什么是一个小例子?
我想运行cd,并ls在Python调试器。我尝试使用!ls但我得到
*** NameError: 名称 'ls' 未定义
我正在调查崩溃的程序,但无法在Visual Studio 2013中加载本机映像DLL的符号.该应用程序是32位并使用.NET 4.0.30319.我通过从模块窗口检查加载到进程中的clr.dll版本来确认这一点.同样从模块窗口,我检查了加载mscorlib.ni.dll的位置:
clr.dll C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
mscorlib.ni.dll C:\Windows\assembly\NativeImages_v4.0.30319_32\mscorlib\ce5f61c5754789df97be8dc991c47d07\mscorlib.ni.dll
Run Code Online (Sandbox Code Playgroud)
我能够成功生成mscorlib.ni.dll的PDB:
但是当我尝试通过右键单击mscorlib.ni.dll的堆栈框架并选择加载符号将其加载到VS 2013中时,我收到一条消息,上面写着"在此文件夹中找不到匹配的符号文件".
我看了看:
创建用于分析报告的Ngen Pdbs / 并遵循生成PDB的简单指令,因为我只想在此时看到函数调用,
如何获取mscorlib.ni.lib的PDB文件(.Net Framework 3.5)
看起来最常见的错误来源是选择正确的位数.我从模块选项卡中知道我正在加载mscorlib.ni.dll的32位变体,再次从我的屏幕截图中,你可以看到我使用的是相同版本的.NET框架和32位版本的Ngen.exe.我为WindowsBase.ni.dll尝试了这个,并且看到了我成功生成PDB但无法加载它的相同行为.
我已启用调试器以及时调试托管和本机代码.
问题:
谢谢!
Python(和 ipython)具有非常强大的事后调试功能,允许在回溯的每个范围内进行变量检查和命令执行。up/down 调试器命令允许更改最终异常的堆栈跟踪的帧,但是__cause__按照raise ... from ... 语法定义的那个异常呢?
Python 3.7.6 (default, Jan 8 2020, 13:42:34)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.11.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: def foo():
...: bab = 42
...: raise TypeError
...:
In [2]: try:
...: foo()
...: except TypeError as err:
...: barz = 5
...: raise ValueError from err
...:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-2-dd046d7cece0> in <module>
1 try: …Run Code Online (Sandbox Code Playgroud)