В нашем магазине мы имеем неоднородную среду и делаем Java на разных компьютерах - в основном Mac OSX, я на Linux и один Windows. Когда дело доходит до отладки JPQL-запросов и их SQL-результатов, необходимо читать простой SQL. Я нашел одну возможность в использовании _general_log_ в msql и позволил серверу вести журнал запросов. Но я ленивый разработчик, поэтому я подумал о более быстром подходе к получению прямых результатов.

В моем Linux-боксе я просто strace -p $CATALINAsPID -f -q - s 9999 - e sendto и запускаю мой запрос. sendto - системный вызов, который содержит простой SQL.

Я хотел сделать то же самое для Mac OSX и нашел dtruss (fassade для dtrace?), Который делает подобные вещи, как strace . Поэтому я попытался сузить его до sendto (аналог Linux) - но безуспешно.

Как работает dtruss, соответственно: как мне отследить простой SQL?

1 ответ1

0

Я нашел хакерский способ, чтобы получить то, что я хочу: просто напишите сценарий dtrace, как:

syscall::sendto:entry
/pid == $setPIDHere/
{
    tracemem((copyin(arg1, arg2)),9999);
}

И захватить результат. Хаки, но работает

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .