我试图通过JNI和WinDBG在基于Java的服务进程中运行的C++组件中调试访问冲突错误。 有我目前面临两个问题:在JNI模块中调试特定的访问冲突
- Java本身使用了第一次机会访问冲突异常做一些内部的线程同步化(至少这是怎么好像),所以我不能只在所有一线突破机会访问冲突(根据Java的漏洞数据库,这是预期的行为,所以我们不应该指望任何修复)
- 异常外码的处理(即应该保护生产环境免受C++代码行为不端)
目前我看到了一种区分Java的AV和我的方式 - Java是偶然的在属于没有加载任何符号的模块或存储器的任何其他位置的地址处,并且我有兴趣捕获在具有符号加载的地方发生的AV。
好像我对如何使用WinDbg来实现它的所有元素,但不能聚集在一起他们:
sxe -c ".if (ln) {gN}" av
问题是我不能。如果语句中指定ln命令的输入(因为它期望表达式),并且我不确定如何检查ln的输出是否为空。