如何在emacs中调试python程序?
我用 python-mode.el
我得到了参考
import pdb; pdb.set_trace();
Run Code Online (Sandbox Code Playgroud)
但不知道如何使用它.
我使用的是Visual Studio 2010专业版和Windows Vista.
首先,我有这个代码.如你所见,它会使程序崩溃!
using System;
namespace Crash
{
class Program
{
static void Main(string[] args)
{
string a = null;
if (a.Length == 12)
{
// ^^ Crash
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
该程序将在if语句中崩溃.现在,我想知道它在if语句中崩溃了.
如果我从Visual Studio"开始没有调试",Crash.exe崩溃.它使用1,356kb的内存.我得到了Close Program/Debug的Vista选项.如果我选择Debug,我可以打开一个新的Visual Studio实例,它指向if语句的NullReferenceException.这很好.
现在让我假设它在另一台计算机上崩溃了,我让他们通过任务管理器给我一个转储文件.它是54,567kb.为什么这么大!这是巨大的!无论如何,我对此不太感兴趣(略)
如果我用Windbg打开那个转储,我对未经训练的眼睛几乎没有用处:
Microsoft (R) Windows Debugger Version 6.12.0002.633 X86
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [C:\Users\Richard\Desktop\Crash.DMP]
User Mini Dump File with Full Memory: Only application data is available
Symbol search path is: SRV*C:\SYMBOLS*http://msdl.microsoft.com/download/symbols
Executable search path is: …Run Code Online (Sandbox Code Playgroud) 我的gdb回溯给出:
(gdb) backtrace
#0 0x00000000 in ?? ()
#1 0x0804a211 in init () at example1.cpp:147
#2 0x0804a6bc in main (argc=1, argv=0xbffff3d4) at example1.cpp:283
Run Code Online (Sandbox Code Playgroud)
信息量不大.Eclipse调试器至少让我看到它停在下面的第3行:
// Create a vertex array object
GLuint vao;
glGenVertexArrays( 1, &vao );
glBindVertexArray( vao );
Run Code Online (Sandbox Code Playgroud)
这是一个非常常见的块,可以在gl编程中看到,我甚至可以使用相同的块运行其他代码,没有任何问题.所以我很困惑.
从运行make构建输出:
g++ -g -DFREEGLUT_STATIC -DGLEW_STATIC -I../../include example1.cpp ../../Commo/InitShader.o -L/usr/lib/mesa -lGLEW -lglut -lGL -lX11 -lm -o example1
Run Code Online (Sandbox Code Playgroud)
包含问题的程序:
// rotating cube with two texture objects
// change textures with 1 and 2 keys
#include "Angel.h"
const int NumTriangles = 12; // …Run Code Online (Sandbox Code Playgroud) 我熟悉VS.Net IDE,它有很多调试支持.但Android开发对我来说是新的东西.我正在使用Eclipse IDE.我想知道如何逐行调试android应用程序就像在.Net IDE中一样?
目前我正在使用日志窗口,但我对它不满意.我需要专家提出建议,使用Eclipse调试Android应用程序的最佳方法是什么?
非常感谢您宝贵的时间和帮助.
我正在使用Xcode 5.我正在使用iOS中的推送通知.我在后台模式和前台模式下获得了令人满意的结果,可以在iOS设备上轻松调试.
但问题是当app处于关闭状态并通过推送通知点击启动但我不知道如何在这种情况下调试.我知道Xcode 4的解决方案,但不知道Xcode 5的解决方案.
那么有什么解决方案可以通过推送通知启动Xcode 5并调试应用程序吗?提供在这种情况下调试的步骤.
我刚开始使用Xcode中的Cocoa开发,做了hello world示例.我要完成" 运行时调试 " 部分的第6步,即
使用调试器工具栏中的"跳过"按钮,开始逐步执行代码.当每行代码执行时,您可以检查程序的状态.变量的值有时以红色绘制,表示该值在最后一步中被修改.请注意,调试器在执行指示的行之前暂停.每次暂停后,您可以添加其他断点或选择"调试">"重新启动"以终止应用程序并启动新的调试会话.
现在我在过去一小时里把头发拉出来的事实是这个调试器只显示汇编代码.我可以手动选择我的源代码文件,但是一旦我点击"Step over",我就会立即回到汇编视图中.我不能为我的生活弄清楚如何关闭汇编程序,并让它显示我的源代码!
我正在从python ad开发C扩展我获得了一些段错误(在开发过程中不可避免......).
我正在寻找一种方法来显示段错误发生在哪一行代码(一个想法就像跟踪每一行代码),我该怎么做?
我没有找到使用Firebug扩展调试Greasemonkey脚本的方法.
有谁知道如何做到这一点 ?
谢谢.
我正在尝试将断点放入GoogleAppEngine源代码(SDK 1.7.0),但IDEA Ultimate(11.0.2)只是告诉我Warning: No executable code found at line 482 in class com.google.appengine.api.memcache.AsyncMemcacheServiceImpl.
当我从单元测试中运行代码并启动开发服务器时,我收到此错误消息.
这是相当年轻的.无论如何,我的源是在外部(相对于IDEA主页和项目主页)目录,我的jar文件在Appengine SDK lib目录下.
我的jar文件作为项目库添加到模块中,我的源文件附加到此库.我也在玩模块依赖,但没有任何运气.最后我决定把这个库放到Compile范围内,但这是一个坏主意,因为SDK在运行时提供这些jar,所以我决定回到提供范围.
我还使用了模块依赖项选项卡上的导出复选框,但我认为这是无关紧要的,根据Web帮助,只有当您拥有依赖模块并且您希望在这些模块中使您的库可用时,导出才很重要.
无论如何,这个问题也出现在4年前.所以我现在想知道解决这个问题是否真的很难?
我现在非常失望.到目前为止我对IDEA没有任何问题......我看到这个问题也出现在其他人身上,所以这不是我想的那么独特.
任何帮助表示赞赏.
由于我javap在下面的实验,我编辑了我的问题:似乎类和源不是不同步的.我查看了SVN的1.7.0相关版本,我使用的是1.7.0 SDK,所以这些版本根本不应该是不同步的.
我按照GDB维基上的说明安装了用于查看STL容器的python pretty-printers.我~/.gdbinit现在看起来像这样:
python
import sys
sys.path.insert(0, '/opt/gdb_prettyprint/python')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end
Run Code Online (Sandbox Code Playgroud)
但是,当我运行GDB并尝试打印STL类型时,我得到以下内容:
print myString
Python Exception <class 'gdb.error'> No type named std::basic_string<char>::_Rep.:
$3 =
Run Code Online (Sandbox Code Playgroud)
任何人都可以对此有所了解吗?我正在运行Ubuntu 12.04,它带有GDB 7.4.