Bagaimana untuk menyahpepijat prosedur tersimpan MySQL

PHPz
Lepaskan: 2023-04-20 10:42:35
asal
1825 orang telah melayarinya

MySQL ialah sistem pengurusan pangkalan data hubungan sumber terbuka yang popular. MySQL membolehkan anda mencipta dan mengurus pangkalan data untuk menyimpan dan mengakses sejumlah besar data. Prosedur tersimpan ialah blok kod yang disimpan dalam pangkalan data yang membolehkan anda melakukan operasi biasa dengan memanggilnya. Apabila membangunkan dan menyahpepijat prosedur tersimpan, anda mungkin menghadapi beberapa masalah dan ralat. Artikel ini akan memperkenalkan cara menyahpepijat prosedur tersimpan MySQL.

  1. Dayakan MySQL Stored Procedure Debugger

Sebelum menyahpepijat prosedur tersimpan, anda perlu mendayakan MySQL Stored Procedure Debugger. Ini boleh dicapai dengan menetapkan parameter berikut dalam fail konfigurasi MySQL:

[mysqld]
... 
# Enable stored procedure debugging 
debugger=1
Salin selepas log masuk

Selepas menetapkan fail, MySQL perlu dimulakan semula untuk perubahan berkuat kuasa.

  1. Menggunakan penyahpepijat

Dalam MySQL, terdapat dua jenis penyahpepijat utama: satu langkah dan bukan langkah. Penyahpepijatan satu langkah ialah cara paling mudah untuk melaksanakan prosedur tersimpan baris demi baris, menjejaki pelaksanaan setiap pernyataan langkah demi langkah. Penyahpepijatan tanpa langkah ialah kaedah menjalankan titik putus semasa melaksanakan prosedur tersimpan. Kedua-dua penyahpepijat diterangkan secara terperinci di bawah.

  1. Penyahpepijatan satu langkah

Penyahpepijatan langkah tunggal ialah kaedah melaksanakan prosedur tersimpan baris demi baris. Ia membolehkan anda menjeda dan memeriksa kod anda sebelum setiap pernyataan. Anda boleh menggunakan langkah berikut untuk mendayakan dan menggunakan penyahpepijat satu langkah:

  1. Tentukan prosedur tersimpan

Pertama, anda perlu mentakrifkan prosedur tersimpan untuk menunjukkan cara untuk melakukan penyahpepijatan satu langkah. Berikut ialah prosedur tersimpan yang mudah:

DELIMITER $$
CREATE PROCEDURE simple_addition(i INT, j INT)
BEGIN
    DECLARE result INT;
    SET result = i + j;
    SELECT result;
END$$
DELIMITER ;
Salin selepas log masuk
  1. Dayakan penyahpepijat satu langkah

Selepas mentakrifkan prosedur yang disimpan, anda perlu mendayakan penyahpepijat satu langkah. Anda boleh menggunakan pernyataan berikut:

SET @@DEBUG=1;
Salin selepas log masuk
  1. Mulakan penyahpepijat

Seterusnya, anda perlu menambah kata kunci "debug" pada pernyataan panggilan prosedur tersimpan untuk memulakan penyahpepijat:

CALL simple_addition(20, 30) debug;
Salin selepas log masuk
Salin selepas log masuk

Selepas melaksanakan pernyataan ini, MySQL akan menjeda pelaksanaan dan memindahkan kawalan ke penyahpepijat satu langkah.

  1. Menggunakan penyahpepijat satu langkah

Dalam penyahpepijat satu langkah, anda boleh mengawal pelaksanaan kod anda menggunakan arahan berikut:

  • c: Laksanakan prosedur tersimpan sehingga pelaksanaan selesai atau titik putus ditemui
  • s: Laksanakan kod prosedur tersimpan baris demi baris
  • n: Jalankan baris kod seterusnya, tetapi tidak akan memasuki subrutin atau fungsi
  • ungkapan p: Cetak nilai nilai atau ungkapan
  • l: Senaraikan kod fungsi semasa atau prosedur tersimpan
  • b: Tetapkan titik putus pada baris semasa

Berikut ialah contoh menggunakan penyahpepijat satu langkah:

  1. Laksanakan prosedur tersimpan dan gunakan kata kunci nyahpepijat untuk membolehkan penyahpepijat satu langkah:
CALL simple_addition(20, 30) debug;
Salin selepas log masuk
Salin selepas log masuk
  1. Laksanakan arahan "s" untuk melaksanakan kod baris demi baris mengikut keperluan.
  2. Semasa melaksanakan baris, masukkan "p hasil" untuk mendapatkan data semasa.
  3. Laksanakan arahan "s" untuk terus melaksanakan kod.
  4. Penyahpepijatan bukan langkah

Penyahpepijatan bukan langkah ialah kaedah menjalankan titik putus semasa melaksanakan prosedur tersimpan. Anda boleh menggunakan langkah berikut untuk mendayakan dan menggunakan penyahpepijat bukan satu langkah:

  1. Tentukan prosedur tersimpan

Sekali lagi, anda perlu mentakrifkan prosedur tersimpan dahulu untuk menunjukkan cara untuk nyahpepijat bukan satu langkah. Berikut ialah prosedur tersimpan yang mudah:

DELIMITER $$
CREATE PROCEDURE simple_subtraction(i INT, j INT)
BEGIN
    DECLARE result INT;
    SET result = i - j;
    SELECT result;
END$$
DELIMITER ;
Salin selepas log masuk
  1. Dayakan penyahpepijat bukan satu langkah

Penyahpepijat bukan langkah boleh didayakan menggunakan arahan berikut :

CALL simple_subtraction(20, 30) debug_on_break;
Salin selepas log masuk

Apabila melaksanakan prosedur tersimpan, jika titik putus ditemui, MySQL akan menghentikan pelaksanaan secara automatik.

  1. Menggunakan penyahpepijatan tanpa langkah

Setelah penyahpepijat tanpa langkah didayakan, anda boleh menggunakan arahan berikut untuk mengawal pelaksanaan kod anda:

  • c: Laksanakan prosedur tersimpan sehingga pelaksanaan selesai atau titik putus ditemui
  • b: Tetapkan titik putus pada baris semasa
  • r: Mulakan semula prosedur tersimpan
  • ungkapan p : Cetak nilai nilai atau ungkapan

Berikut ialah contoh menggunakan penyahpepijat bukan satu langkah:

  1. Laksanakan prosedur tersimpan dan tetapkan titik putus pada baris 3 :
CALL simple_subtraction(20, 30) debug_on_break(3);
Salin selepas log masuk
  1. Laksanakan prosedur tersimpan sehingga titik putus ditemui:
c;
Salin selepas log masuk
  1. Cetak nilai daripada pembolehubah "hasil":
p result;
Salin selepas log masuk
  1. Padam titik putus:
b -3;
Salin selepas log masuk
  1. Mulakan semula prosedur tersimpan:
r;
Salin selepas log masuk
  1. Ringkasan

MySQL menyediakan pelbagai kaedah untuk menyahpepijat prosedur tersimpan, termasuk penyahpepijatan satu langkah dan penyahpepijatan bukan satu langkah. Apabila menggunakan penyahpepijat ini, anda boleh menggunakan pelbagai arahan untuk mengawal pelaksanaan kod anda dan melihat nilai pembolehubah dan ungkapan. Jika anda sedang membangunkan prosedur tersimpan yang kompleks, penyahpepijat ini boleh menjadi alat yang sangat berguna.

Atas ialah kandungan terperinci Bagaimana untuk menyahpepijat prosedur tersimpan MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan