在我们的商店中,我们的环境是不均匀的,并且在不同的机器上执行 Java - 主要是 Mac OSX,我在 Linux 上,还有一个 Windows 机器。当涉及到调试 JPQL 查询及其 SQL 结果时,需要阅读普通 SQL我发现一种可能性是使用 msql 中的 _general_log_ 并让服务器进行查询日志记录。但我是一个懒惰的开发人员,所以我想到了一个更快的方法要得到直接结果。
在我的Linux 系统我只是strace -p $CATALINAsPID -f -q - s 9999 - e sendto
让我的查询运行。sendto
是包含以下的系统调用:普通 SQL。
我想对 Mac OSX 做同样的事情,并发现dtruss
(跟踪?),它的功能与 类似strace
。因此我尝试将其缩小到sendto
(类似于 Linux) - 但没有成功。
dtruss 如何工作,如何追踪普通 SQL?
答案1
我找到了一种简单的方法来得到我想要的东西:只需编写一个 dtrace 脚本,如下所示:
syscall::sendto:entry
/pid == $setPIDHere/
{
tracemem((copyin(arg1, arg2)),9999);
}
然后获取结果。有点黑客,但有效。