我正在从VB.NET调用一个正确声明的非托管C ++ DLL,如下所示:
Query query = databaseReferenceMarkers.orderByChild("lat").equalTo(marker.getPosition().latitude);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot child: dataSnapshot.getChildren()) { child.getRef().removeValue(); }
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e(TAG, "onCancelled", databaseError.toException());
}
});
这没有问题,输出是预期的。 然后我想调试我的代码。我在第1行设置了一个BP,然后跳过(F10)到第3行。这再一次没有问题。 然后我启用了“本机代码调试”并再次执行相同的操作。然而,这不再起作用了。一旦我在第2行按F10(跳过),就会在ntdll.dll(访问冲突写入位置0x)中抛出异常。
最终我希望能够使用F11(步入)单步进入非托管函数,这也不能用于相同的异常。但是我很困惑,因为为什么跳过也不起作用。
此外,我试图在DLL代码中设置BP,但是我不能这样做,因为显然“没有为此文档加载符号”。这是另一件我不理解的事情,因为DLL是在完全调试的情况下编译的,并且它被正确地包含在解决方案中的项目中。
有没有人知道问题可能是什么?请记住,执行代码正常,无需调试步进,工作正常。