草庐IT

DEBUGGING

全部标签

android - 如何调试windows版本的adb.exe?

我已经使用MINGW=yes构建了整个android源代码和adb.exe。但是如何调试呢?谢谢。 最佳答案 gdb是调试Android的首选工具。谷歌“使用gdb调试android”以供引用。一个好的开始点是http://www.omappedia.org/wiki/Android_Debugging. 关于android-如何调试windows版本的adb.exe?,我们在StackOverflow上找到一个类似的问题: https://stackover

.net - Fn 地址不可用

我正在尝试调试我的演示应用程序(Windows窗体)以破坏内存中的特定函数。我将我的应用附加到windbg;获取一个函数的地址(点击某个按钮,通过x命令)并在那里放置一个未解析的断点(bu)。但是我无法激活这个断点,因为我的函数地址不可用;即使我运行我的应用程序并通过按钮单击事件调用该函数。 最佳答案 实际上你应该设置一个地址断点所以使用bp而不是bu就像这样:bp12345678其中12345678是x输出的地址,见documentation。 关于.net-Fn地址不可用,我们在St

c++ - 是否可以直接识别覆盖整个堆栈的错误代码?

非常简单地说,如果C++程序执行以下函数(例如,在Windows7上,使用任何VS版本编译),然后随后崩溃,您使用WER附加调试器,或者让WER生成故障转储并稍后分析这个故障转储。是否有可能从转储中的信息,直接推断这个函数被执行了,也就是说,找到与执行它的线程有关的痕迹函数被执行。或者当我破坏整个堆栈时,所有执行痕迹都消失了吗?voidbye_bye_stack(){intlocal=42;int*stackaddr=&local;while(time(NULL)!=NULL){//preventoptimizationsviacalltotime()++stackaddr;//sta

java - 遇到断点时,IntelliJ IDEA 会降低整个计算机的速度

我在(64位)Windows7Enterprise上使用IntelliJIDEA12.1.6(我在IDEA11上也遇到过同样的问题,尽管不常见)。我在Java7(1.7.45)下运行它。当我在IDE中运行程序时,在调试器(本地调试)下,一切都很好,直到我遇到断点(这些是普通的特定行断点,不是方法断点或异常断点)。一旦遇到断点,几乎所有时间(虽然不总是)我的整个机器都会减慢到接近停止。所有键盘操作(不仅仅是在IDEA中)都会变慢(它们最终会得到处理,因此事件会被缓冲,而不是丢失)。同样适用于窗口操作(拖动、最小化、升高、降低)。一旦程序从断点恢复,一切都会完全恢复正常,直到下一次遇到断点

c++ - Windbg:ChildEBP和RetAddr的含义

在WinDbg中,k或kb命令展开堆栈并生成堆栈跟踪。输出看起来像这样-ChildEBPRetAddrArgstoChild0021b2f0559fdbf204b885a002a300005a675a790021b3dc559fc3b802a3d0b80021b4c000000000据我所知,EBP是指向当前栈帧起始地址的基指针。RetAddr是“返回地址”,一旦当前函数返回,处理将在此处继续。但是,据我所知,函数框架被压入堆栈。那么,为什么RetAddr的值与ChildEBP的值明显不同?它们应该是相似的,因为我们在同一个堆栈上工作。我错过了什么吗? 最佳

c++ - 当 hModule 和 lpProcName 有效时,GetProcAddress 返回 NULL

我最近开始了一个新项目,我的目标是将字节码注入(inject)另一个进程,然后启动一个远程线程执行我的字节码,但是我遇到了一个非常奇怪的问题。它所做的是分配和写入任意进程的内存,它为远程进程写入一个包含指向user32.dll和kernel32.dll中函数指针的结构,它还为函数指针写入一个调用操作从结构中,它然后创建一个带有“调用操作”的lpStartAddress的远程线程你可以在这里找到源代码:http://pastie.org/9298306在第55行调用了GetPrivileges(第185行的方法),它返回true,意味着OpenProcessToken、LookupPri

c++ - 在多线程应用程序中设置硬件断点不会触发

我写了一个小调试器来分析和查找某些问题。现在我实现了一个硬件断点来检测被覆盖的内存地址的访问。当我用测试过程运行我的调试器时,一切正常。当我访问该地址时,断点将触发并记录调用堆栈。问题是,当我对运行多个线程的应用程序运行相同的程序时。我正在将断点复制到创建的每个线程以及主线程中。没有一个函数报告错误,一切看起来都很好,但是当访问该地址时,断点永远不会触发。所以我想知道是否有一些文档对此进行了描述,或者在多线程应用程序的情况下是否还有其他我必须做的事情。设置断点的函数是这样的:#ifndef_HARDWARE_BREAKPOINT_H#define_HARDWARE_BREAKPOINT

c - 使用 Windows 调试器查看用 C 写入的内存位置?

我在dosbox中运行了TurboC和Windows调试我有这个C程序,它有两条主线,如你所见。inta=5然后一行显示a的地址,printf("addressofa=%x",&a)我运行它好像告诉我a已经分配到了fff4的地址现在我想使用调试来希望在该内存地址看到5的值但是没有显示如何在调试中看到它? 最佳答案 这是编译后的main函数的DEBUG输出:16E1:01FA55PUSHBP16E1:01FB8BECMOVBP,SP16E1:01FD83EC02SUBSP,+0216E1:0200C746FE0500MOVWORDPT

c++ - 我们如何调试在 C++ 应用程序中使用的 matlab 制作的 DLL?

我们有使用mcc编译成DLL的matlab.m文件。这由我们在VisualStudio中调试的C++GUI应用程序使用。当我们到达对我们的matlab函数的调用时,我们所能做的就是跳过它。我们如何在源代码级别调试.m代码?我认为添加一些“打印”语句(在matlab中实际上称为“disp”)并在VS的输出窗口中观察内容滚动会很容易。但我们什么也没看到。甚至不是来自C++源代码中的printf(),也不是直接从命令行而不是在VS中运行我们的应用程序。从Google和S.O.,我们了解到发送到stdout的任何东西都不会出现在任何地方。(这个问题是相关的:VisualStudio2012C+

c++ - 调试线程时无限循环

我正在尝试将硬件断点附加到游戏进程,我成功了。然后我试图遍历异常并等待我放在那里的异常,它也工作正常。问题是,在它发生之后,它进入了我无法刹车的无限循环。你能建议吗?我这样做的原因是我想在此时停止线程,使用Context读取EAX值,然后继续该过程。Header.h包括在这里调用的函数,它们都工作正常,因此我现在不包括它。#include"Header.h"#包括intmain(){SetDebugPrivilege(TRUE);DWORDdwProcessID=0;DWORDdwGame=0;printf("Lookingforgameprocess...\n");while(dwP