как отлаживать хранимые процессы MySql, не нарушая поток управления из приложения - PullRequest
2 голосов
/ 30 мая 2010

Есть ли способ сделать следующее:

У меня есть база данных MySQL, и в ней также записано много сохраненных процедур. Я использую клиентскую библиотеку MySQL в C для подключения к этой БД и, помимо прочего, для вызова хранимых процедур. Есть ли способ установить точки останова в хранимых процедурах так, чтобы при выполнении вызова из программы на C (с использованием клиентской библиотеки mySql) в хранимый процесс поток управления был остановлен в программе на C, и мы можем перейти в хранимый процесс, называемый на любой уровень вложенности и проверки переменных и т. д. (как и любой приличный отладчик C)?

Есть ли ЛЮБОЙ способ сделать это? Через какой-то сторонний инструмент или что-то подобное, если не через обычный MySql.

Помощь приветствуется.

спасибо

Ответы [ 2 ]

0 голосов
/ 30 мая 2010

Спасибо за ваш ответ Марк.Таким образом, рекомендуемый вами подход похож на тот, который описан в следующей статье Dr.Dobbs Journal drdobbs.com/database/218100564. Насколько я понимаю, инструменты «отладки» для MySql, такие как DbForge для MySql, также автоматизируют процесс, но по сути используюттот же подход.то есть они распечатывают параметры или другие данные в своего рода таблице отладки (могут включать временную метку и т. д., чтобы получить представление о потоке управления и параметрах при последующем просмотре таблицы отладки).Единственная помощь, которую могут получить эти инструменты, заключается в том, что они избавляют от необходимости создавать таблицу отладки и вручную писать операторы вставки в различных точках хранимых процедур.это так?Это все еще некоторая помощь, но то, что я искал, - это что-то доступное, которое просто разбивается на сохраненный процесс в точке останова в продолжение потока управления из программы C, и позволяет нам проверять параметры, передаваемые из приложения C в сохраненный процесс.вмешиваться, и так далее, и тому подобное.Видимо, не существует инструмента, который делает то же самое?

Кто-нибудь использовал функцию отладки DbForge?из этого URL кажется, что они могут поддерживать то, что я ищу, хотя бы частично?

http://www.devart.com/dbforge/mysql/studio/articles/debugging.html

МАРК, я не понял вашего комментария о взломе самого демона mysql.

0 голосов
/ 30 мая 2010

Нелегко отлаживать хранимые процедуры MySQL.

Однако, что вы можете сделать, так это встроить их с помощью INSERT в таблицу журналов некоторого описания. Аналогичным образом, если у вас есть пользовательская функция, которая печатает материал в журнал, вы можете вызывать его в разные моменты, чтобы увидеть, что происходит.

Ни один из них не прервет поток.

Если у вас вызвана пользовательская функция, вы можете легко установить точку останова и присоединиться к mysqld с помощью gdb. Однако проверка состояния (то есть переменных) не является простой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...