对于我当前的嵌入式应用程序,我试图将GDB观察点放在固定的内存地址上.
例如,我的应用程序更新以下地址:0x10793ad0.为了确保代码的哪一部分破坏了价值,我试过了
watch 0x10793ad0
Run Code Online (Sandbox Code Playgroud)
即使GDB在此之后没有打印任何错误,但即使我验证了值在执行的开始和结束之间被修改,它也无法在执行期间中断.
问题:
有谁知道如何在调试期间查看游标中的内容,以便我可以确定数据库帮助程序的功能?
它一直表现得像是在返回数据,但是当我尝试使用该cursor.isNull(0)方法时,我不断被NullPointerException抛出而无法看到光标在其中的内容,而单步执行则让我非常沮丧.
任何帮助将非常感激.
谢谢.
我正在寻找像ltrace或strace这样的工具,它可以跟踪可执行文件中的本地定义函数.ltrace仅跟踪动态库调用,而strace仅跟踪系统调用.例如,给定以下C程序:
#include <stdio.h>
int triple ( int x )
{
return 3 * x;
}
int main (void)
{
printf("%d\n", triple(10));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
运行程序ltrace将显示调用,printf因为这是一个标准库函数(我的系统上是一个动态库),strace并将显示启动代码,用于实现printf的系统调用和关闭代码的所有系统调用,但我想要一些能告诉我函数triple被调用的东西.假设优化编译器没有内联本地函数,并且二进制文件没有被剥离(符号被删除),是否有工具可以做到这一点?
编辑
几点澄清:
我在php页面中有一个未知对象.
如何打印/回显它,以便我可以看到它具有哪些属性/值?
功能怎么样?有没有办法知道对象有什么功能?
我发现Python的断言语句是捕获永远不会发生的情况的好方法.当代码被认为是正确的时,可以通过Python优化删除它.
它似乎是在调试模式下运行Python应用程序的完美机制.但是看看django,twisted和zope等几个Python项目,assert几乎从未使用过.那么,为什么会这样呢?
为什么在Python社区中不经常使用断言语句?
我正在远程调试DElphi XE2(更新#4)和Windows XP目标之间的大型应用程序.PAServer正在目标上运行,应用程序正常工作并在断点处停止(您不会相信这个成就有多么难 - 提示 - 删除您的DPROJ并在XE之前通过任何IDE时再次启动).
我注意到局部变量和监视器的显示以一种奇怪的格式显示我的字符串,而在本地调试时通常会显示"某些字符串"格式.我知道了:

任何人都可以告诉我为什么字符串以这种方式显示?我还得到{NULL}和{}之间的垃圾和未分配的输出变量之间的垃圾.谢谢.
.我看到这种格式表示宽字符串.我在Windows 7上尝试了一个简单的应用程序并获得了以下结果.我的应用程序在一个断点:

显示的本地字符串变量:

注意截断的'Hello'.似乎XE2有时会遇到远程unicode字符串的问题.我的PaServer是版本1.0.2.任何人都可以检查这是最新的吗?'来自更新#4的Twas ......
如何在IntelliJ中跳转到下一个断点,就像在Visual Studio中按下F5?
当调试器附加到.NET进程时,它(通常)在抛出未处理的异常时停止.
但是,当您使用某种async方法时,这似乎不起作用.
我之前尝试的方案列在以下代码中:
class Program
{
static void Main()
{
// Debugger stopps correctly
Task.Run(() => SyncOp());
// Debugger doesn't stop
Task.Run(async () => SyncOp());
// Debugger doesn't stop
Task.Run((Func<Task>)AsyncTaskOp);
// Debugger stops on "Wait()" with "AggregateException"
Task.Run(() => AsyncTaskOp().Wait());
// Throws "Exceptions was unhandled by user code" on "await"
Task.Run(() => AsyncVoidOp());
Thread.Sleep(2000);
}
static void SyncOp()
{
throw new Exception("Exception in sync method");
}
async static void AsyncVoidOp()
{
await AsyncTaskOp();
}
async static Task AsyncTaskOp() …Run Code Online (Sandbox Code Playgroud) 我正在开发一款iPhone应用程序.我是一名全职Java开发人员,我习惯使用Eclipse,我可以在其中放置一个断点并停止该过程.然后,我可以输入我想要的任何表达式,Eclipse将使用该过程中该点的值对其进行评估.
有没有办法在Xcode中做到这一点?我希望能够在断点处停下来,然后输入一些代码来评估它.gdb控制台让我这样做po(print-object),但它确实有限.有帮助吗?
我的问题:
在开发我的应用程序时,我遇到了一个尴尬的问题.正如标题中所提到的,每次我在启动时安装我的应用程序(在运行模式下,而不是调试!)等待调试器连接..消息出现1-2-3秒,应用程序启动.
我想要的:
我想要的是能够在没有出现该消息的情况下启动应用程序(它只在最近几天出现,我不记得更改与调试有关的任何内容).
我尝试过的:
android:debuggable="false"但如果我这样做,调试器永远不会附加,消息永远不会消失.USB Debugging,但仍然没有结果.我已经开发了几个Android应用程序,从来没有偶然发现这个.为什么我无法在RUN模式下启动应用程序?有没有其他方法可以在设备上安装应用程序,而无需点击Eclipse中的运行按钮?
如果有必要,我可以从AndroidManifest或代码的其他部分发布代码片段,但正如我已经提到的,我几天前没有得到这种奇怪的行为.
debugging ×10
android ×2
gdb ×2
assert ×1
async-await ×1
c# ×1
cursor ×1
delphi ×1
delphi-xe2 ×1
exception ×1
ide ×1
linux ×1
objective-c ×1
php ×1
python ×1
string ×1
trace ×1
watchpoint ×1
xcode ×1