1c mengaktifkan debugging di server. Men-debug prosedur server (1Cv82)

Tugas pengembang 1C tidak hanya menulis kode, tetapi juga melacak dan memperbaiki kesalahan, membangun algoritma eksekusi perintah yang optimal dan mengoptimalkan kecepatan kerja, yaitu debugging. Sulit untuk melakukan ini tanpa menggunakan fungsionalitas debugger prosedur server bawaan.

Awalnya, mode debugging dinonaktifkan pada server 1C, sehingga pengembang harus melakukan manipulasi sederhana dengan pengaturan agar dapat memeriksa kode secara menyeluruh.

Mengaktifkan mode debugging di server untuk platform 1C versi 8.2 dan lebih tinggi

Algoritme untuk mengaktifkan debugging cukup sederhana. Itu tidak memerlukan pengetahuan mendalam tentang arsitektur sistem operasi dan administrasi 1C. Namun, Anda tetap harus sangat berhati-hati, karena pekerjaan debugging dilakukan langsung di server dan dengan hak administrator. Oleh karena itu, jika Anda tidak memiliki pengetahuan menyeluruh, ikuti dengan ketat algoritme tindakan tanpa improvisasi:

  • Hentikan layanan 1C:Enterprise Server Agent melalui Manajer Server. Jika pengaturan dilakukan di server produksi, maka Anda harus berhati-hati terlebih dahulu tentang tidak adanya pengguna 1C di database;
  • Luncurkan editor registri sistem dengan mengklik "Mulai" - "Jalankan" atau pintasan keyboard "Menang" + "R". Di jendela yang terbuka, masukkan baris “regedit”;
  • Di registri Anda perlu menemukan item tersebut;

  • Di antara parameter, temukan “ImagePath” dan ubah dengan menambahkan “-debug” ke nilai yang ada dengan spasi di akhir;
  • Melalui Manajer Server, mulai layanan yang dihentikan - "1C:Enterprise Server Agent".

Mengaktifkan mode debugging di server untuk 1C versi 8.1

Jika Anda perlu mengaktifkan mode debugging pada platform 8.1, algoritme tindakannya hampir tidak berubah. Satu-satunya perubahan adalah lokasi parameter jalur "ImagePath". Di versi 8.1 terletak di bagian.

Pengembang 1C menyarankan untuk mengaktifkan mode debugging secara eksklusif untuk server pengujian, tempat kode harus di-debug. Alasan rekomendasi ini adalah karena dampak kinerja yang terjadi ketika debugging diaktifkan di server. Jika Anda memiliki banyak pengguna atau kekuatan server buruk, ikuti saran ini dengan hati-hati agar proses debug tidak menimbulkan konsekuensi negatif.

Diimplementasikan pada versi 8.3.7.1759.

Kami telah mendesain ulang mekanisme debugging secara signifikan. Ada beberapa alasan untuk hal ini. Pertama, kami ingin memberi Anda kemampuan untuk men-debug setiap aplikasi yang tersedia saat ini. Kedua, arsitektur debugger sebelumnya memerlukan perubahan agar dapat mengikuti tren saat ini dan mengakomodasi perkembangan di masa depan. Ketiga, diperlukan antarmuka debugging universal, yang tidak hanya menggunakan konfigurator 1C:Enterprise, tetapi juga .

Keuntungan utama

Agar Anda dapat membayangkan cakupan perubahan yang kami buat, kami akan mencantumkan secara singkat keunggulan utama mekanisme baru ini.

Debugging HTTP

Mekanisme debugging sebelumnya didasarkan pada fakta bahwa debugger, yang diimplementasikan dalam konfigurator 1C:Enterprise, berinteraksi langsung dengan item debug (aplikasi klien dan server). Interaksi ini dilakukan dengan menggunakan protokol TCP/IP.

Namun, dengan dirilisnya aplikasi 1C:Enterprise di Internet, dan khususnya dengan munculnya aplikasi seluler, pendekatan ini telah menjadi sumber keterbatasan dan ketidaknyamanan. Protokol TCP/IP tidak selalu mengizinkan debugger untuk “mencapai” item yang sedang di-debug. Lagi pula, mereka mungkin berada di luar jaringan lokal tempat debugger berjalan.

Oleh karena itu, dalam mekanisme baru, kami memilih protokol HTTP yang lebih “ada di mana-mana” sebagai protokol transport, yang juga digunakan oleh aplikasi klien untuk terhubung ke database informasi.

Arsitektur debugging modern

Fitur dari mekanisme debugging sebelumnya adalah kebutuhan untuk terhubung ke basis info menggunakan konfigurator. Akibatnya, pengembang debugging memiliki akses penuh ke semua fungsi administratif.

Mekanisme debugging baru tidak lagi memerlukan koneksi ke infobase yang sedang di-debug. Hal utama yang sekarang dibutuhkan debugger adalah konfigurasi yang sama yang berfungsi untuk klien. Untuk mendapatkannya, tidak perlu terhubung ke infobase yang sedang di-debug. Anda dapat memuatnya, misalnya, dari sebuah file.

Men-debug aplikasi seluler

Berkat penggunaan protokol HTTP, debug aplikasi yang dijalankan oleh platform seluler menjadi mungkin. Selain itu, Anda dapat men-debug konteks apa pun: klien, server, serta pekerjaan latar belakang.

Sekarang, selama proses debug, Anda dapat mengubah nilai variabel apa pun yang dapat ditulis. Untuk melihat dan mengubah variabel lokal dengan cepat, kami telah menerapkan jendela terpisah. Dan penghitungan ekspresi yang ditampilkan oleh debugger sekarang dilakukan dalam mode asinkron.

Debug di Alat Pengembangan

Saat membuat mekanisme debugging baru, kami menerapkan antarmuka perangkat lunak universal baru untuk berinteraksi dengannya. Antarmuka ini digunakan oleh konfigurator 1C:Enterprise, dan antarmuka yang sama sekarang digunakan oleh lingkungan pengembangan baru. Dengan demikian, semua kemampuan debugging sekarang tersedia saat bekerja di .

Arsitektur proses debugging

Arsitektur debugging baru terlihat seperti ini:

Debugging melibatkan debugger, item debug, dan elemen baru - server debug.

Tidak ada transfer informasi langsung antara item debugger dan debug. Semua interaksi diatur melalui server debugging. Ini adalah elemen utama dari mekanisme tersebut. Server debugging memiliki antrian pesan yang melaluinya item debugger dan debug meneruskan informasi satu sama lain.

Debugger itu sendiri dan item debug berkomunikasi dengan server debug melalui HTTP. Jadi sekarang tidak masalah di mana item debugging ini berada.

Interaksi dengan server debug dimulai oleh item debugger dan debug. Untuk tujuan ini, koneksi tambahan diatur. Tujuan utama mereka adalah untuk mengetahui apakah informasi telah muncul di server debug. Dan jika muncul, dapatkan informasi ini.

Dengan demikian, interaksinya bersifat sepihak. Informasi terus-menerus ditransfer dari server debug ke debugger, dan ke objek debug.

Identifikasi basis informasi

Dalam mekanisme sebelumnya, string koneksi digunakan untuk mengidentifikasi basis info. Solusi ini dalam beberapa kasus menyebabkan kesulitan dalam mencocokkan item debugging dan konfigurator. Karena, pertama, peka huruf besar-kecil, dan kedua, saat men-debug beberapa konteks, platform menghasilkan string koneksi secara otomatis. Dan itu tidak selalu sesuai dengan yang Anda tentukan saat menghubungkan basis info di konfigurator. Menemukan dan memperbaiki situasi seperti itu mempersulit proses debugging.

Dalam mekanisme baru kami menghilangkan string koneksi. Sekarang kami menggunakan pengidentifikasi basis informasi. Di basis info file, pengidentifikasi seperti itu dihasilkan saat pertama kali koneksi klien dibuat. Di basis info server, pengidentifikasi pendaftaran infobase di cluster digunakan sebagai pengidentifikasi tersebut.

Poin tambahan yang bagus di sini adalah kami masih mempertahankan mekanisme debugging lama di platform untuk saat ini (mungkin dikecualikan di masa mendatang). Dan Anda dapat menggunakannya jika Anda mau, atau jika perlu. Jadi kami telah memodifikasi mekanisme lama, dan sekarang juga menggunakan pengidentifikasi infobase, dan bukan string koneksi.

Skenario Debugging Khas

Dari sudut pandang pengembang aplikasi, skenario debugging yang umum tidak berubah. Satu-satunya perbedaan signifikan adalah mekanisme debugging baru harus diaktifkan. Karena secara default dinonaktifkan.

Terlepas dari itu, masuk akal untuk memahami apa yang terjadi sekarang saat Anda menjalankan proses debug. Karena ini mungkin berguna bagi Anda dalam beberapa skenario kerja non-standar.

Opsi berkas

Sebelum Anda mulai men-debug versi file, Anda perlu menunjukkan di pengaturan konfigurator bahwa Anda ingin menggunakan mekanisme debugging baru - “ Debugging HTTP».

Dalam hal ini, konfigurator akan secara otomatis meminta Anda untuk menggunakan server debugging lokal. Anda harus menyetujui ini dan memulai ulang konfigurator.

Metode debugging yang Anda atur disimpan di antara sesi konfigurator, tetapi disimpan dalam konteks basis info. Oleh karena itu, untuk basis info lain, Anda harus mengaktifkannya kembali.

Sekarang, ketika Anda memulai konfigurator, atau ketika Anda memulai ulang, platform akan secara otomatis meluncurkan server debugging. Ini adalah aplikasi terpisah, dbgs.exe. Anda dapat melihatnya di task manager.

Parameter ownerPID menentukan pengidentifikasi aplikasi yang memiliki server debugging ini. Dalam hal ini, ini adalah konfigurator 1C:Enterprise.

Sekarang, jika Anda meluncurkan sesi debugging 1C:Enterprise dari konfigurator, maka secara otomatis akan terhubung ke server debugging, dan di konfigurator Anda akan melihat item debugging yang terhubung.

Jika sesi 1C:Enterprise diluncurkan tanpa debugging, maka, seperti sebelumnya, Anda dapat menghubungkannya ke debugger. Hanya sekarang Anda perlu menentukan alamat server debug:

Anda dapat menemukan alamat ini dari pengaturan item debug:

Ada satu hal yang tidak biasa terkait dengan bekerja dengan beberapa database file sekaligus. Dalam versi file, setiap konfigurator dengan http debugging diaktifkan meluncurkan salinan server debugnya sendiri pada port yang berbeda:

Oleh karena itu, jika Anda membuka beberapa konfigurator sekaligus, maka untuk menghubungkan aplikasi klien ke debugger, Anda harus memilih yang benar.

Opsi klien-server

Sebelum Anda mulai melakukan debug dalam versi klien-server, Anda perlu, seperti sebelumnya, memulai server 1C:Enterprise dalam mode debugging, tetapi menunjukkan bahwa mekanisme HTTP baru akan digunakan untuk debugging. Misalnya seperti ini:

ragent.exe -debug -http

Ketika server dimulai dengan cara ini, server debugging juga akan dimulai.

Parameter ownerPID akan menunjukkan pengidentifikasi manajer cluster 1C:Enterprise.

Sekarang dalam pengaturan konfigurator, seperti halnya database file, Anda perlu menunjukkan bahwa Anda ingin menggunakan mekanisme debugging baru - “ Debugging HTTP».

Dalam hal ini, konfigurator akan secara otomatis meminta Anda untuk menggunakan server debugging cluster, dan bukan server lokal. Anda harus menyetujui ini dan memulai ulang konfigurator.

Menghubungkan Item Debugging

Saat Anda memulai sesi debug dari konfigurator, aplikasi secara otomatis menghubungkan item debug (klien dan server) ke server debug.

Pada saat yang sama, seperti sebelumnya, Anda memiliki kesempatan untuk mengonfigurasi konfigurator untuk menghubungkan item debugging secara otomatis, terlepas dari bagaimana item tersebut diluncurkan. Sekarang kemungkinan-kemungkinan ini menjadi lebih kaya.

Pertama, platform sekarang menawarkan Anda semua kemungkinan item debugging untuk dipilih.

Dan kedua, cara pengaturan lain yang lebih halus telah muncul. Ini adalah penggunaan pilihan yang telah dibuat sebelumnya.

Anda dapat menggunakan pilihan tersebut saat menghubungkan item debug dan untuk melihat item debug yang tersedia.

Dalam pemilihan, selain item debugging itu sendiri, Anda dapat menentukan pengguna tertentu yang sesinya menarik bagi Anda, dan juga, jika pemisahan data digunakan, tunjukkan area basis info yang akan di-debug.

Mengubah variabel, properti objek, dan mengevaluasi ekspresi secara asinkron

Mekanisme debugging baru memungkinkan Anda mengubah nilai variabel saat melakukan debug. Pada mekanisme sebelumnya tidak ada kemungkinan seperti itu.

Untuk memudahkan melihat dan mengubah variabel lokal, yang tampaknya merupakan tugas paling umum, kami telah menerapkan “ Variabel lokal».

Secara lahiriah, ini sangat mirip dengan “Papan Skor” yang biasa Anda gunakan. Namun, pertama, jendela ini sudah otomatis terisi dengan semua variabel lokal, dan kedua, Anda kini dapat mengubah nilai variabel.

Anda dapat mengubah nilai tipe primitif langsung di sel " Arti»:

Dan untuk mengubah nilai lainnya, Anda dapat menggunakan jendela input ekspresi:

Bonus yang bagus adalah tooltip kontekstual berfungsi penuh di jendela ini.

Dengan cara yang persis sama, Anda dapat mengubah nilai variabel apa pun (tidak hanya lokal) dan properti yang dapat ditulis. Di jendela perhitungan ekspresi (yang dipanggil dengan perintah Shift+F9), Anda dapat mengubah nilai variabel baik di sel “Nilai” dan menggunakan dialog terpisah.

Omong-omong, penghitungan ekspresi itu sendiri sekarang dilakukan secara asinkron. Ini berarti bahwa konfigurator memerintahkan penghitungan item debugging. Dan untuk beberapa waktu perhitungan ini diharapkan ada di server. Jika perhitungan sudah selesai, hasilnya segera dikirim ke konfigurator. Jika penghitungan dilakukan dalam jangka waktu lama, maka hasil penghitungan tersebut akan sampai ke konfigurator secara asinkron nantinya. Pendekatan ini memungkinkan Anda untuk tidak menunggu perhitungan yang panjang di konfigurator dan melanjutkan pekerjaan Anda.

Artikel ini membahas tentang cara mengaktifkan debugging pada server 1C 8.1, 8.2 dan 8.3 di sistem operasi Windows dan Ubuntu.

Selain itu, saya perhatikan bahwa artikel ini adalah bagian dari serangkaian artikel kecil tentang debugging di 1C:

  • Cara mengaktifkan debugging di server 1C

Aktifkan debugging pada server 1C di Windows

Luncurkan editor registri dengan menjalankan perintah regedit (menggunakan Win+R atau Start->Run).

Anda dapat membaca selengkapnya tentang debugging HTTP dan server debug di artikel berikutnya dalam seri ini.

Aktifkan debugging pada server 1C di Ubuntu

Pertama kita instal servernya:

layanan sudo srv1cv83 berhenti

Setelah ini, buka file /etc/init.d/srv1cv83 sebagai superuser dan temukan baris di dalamnya:

Dan kami membawanya ke bentuk ini:

Kemudian kita memulai server lagi:

layanan sudo srv1cv83 mulai

Di konfigurator pada mesin klien, buka “Pengaturan” -> “Luncurkan 1C:Enterprise” -> “Lanjutan” dan aktifkan dua item:

  • "Setel mode pengaktifan debug"
  • "Mulai debug saat startup"

Anda dapat membaca tentang cara menginstal server 1C di Ubuntu 16.04/18.04.

Itu saja, semoga artikel ini bermanfaat bagi Anda. Izinkan saya juga mengingatkan Anda tentang artikel lain dalam seri tentang debugging di 1C; tautan ke artikel tersebut dapat ditemukan di awal artikel ini.

Bagaimana cara memulai debugging pada server 1C...

Secara default, saat menggunakan arsitektur server-klien 1C:Enterprise, mode debugging kode 1C hanya berfungsi di sisi klien. Prosedur dan fungsi server tidak terlihat oleh mesin klien.

Untuk mengaktifkan penggunaan debugging pada server 1C, Anda harus melakukan langkah-langkah berikut:

1. Temukan dan hentikan layanan “1C:Enterprise Server Agent 8.3” di manajer layanan (untuk versi 8.3).

2. Buka editor registri sistem. Anda dapat menggunakan baris perintah atau alat menu Mulai - Jalankan... dan perintah regedit.

3. Temukan cabang di registri:

  • Untuk versi 1C 8.1
  • Untuk versi 1C 8.2
  • Untuk versi 1C 8.3

4. Ubah properti ImagePath, tambahkan direktif “-debug” di akhir baris. Anda akan mendapatkan baris properti berikut: “C:\Program Files (x86)\1cv8\8.3.6.2152\bin\ragent.exe” -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d “C: \Program Files (x86)\1cv8\srvinfo" –debug

Setelah itu, kode server 1C dapat diperiksa dengan aman menggunakan debugger dan titik henti sementara dapat diatur jika diperlukan.

18.10.2016

Men-debug pada server 1C (8.2, 8.3...)

Jika database 1C berjalan dalam versi client-server, mode debugging kode di sisi server dinonaktifkan. Oleh karena itu, tidak mungkin untuk melihat langkah demi langkah apa yang terjadi saat menjalankan suatu fungsi atau prosedur. Untuk mengaktifkan debugging sisi server, Anda perlu mengikuti beberapa langkah sederhana.

Aktifkan debugging pada 1C:Enterprise server 8.2, 8.3

Hal pertama yang perlu Anda lakukan adalah menghentikan layanan server 1C:Enterprise. Buka "Start - Run" (atau pintasan keyboard "Windows + R"), tulis "services.msc" (tentu saja Anda perlu membuka manajemen layanan Windows dari Administrator)

Setelah berhenti, buka editor registri Windows ("Mulai - Jalankan" (atau pintasan keyboard "Windows + R") dan tulis "regedit"), dan temukan cabang dengan nama "" atau "" tergantung pada versi platform


Kami tertarik dengan kunci registri bernama "ImagePath". Tambahkan "-debug" di akhir nilai kunci. Ini berarti mode debugging di sisi server 1C diaktifkan.
Dulu: "C:\Program Files\1cv8\8.3.6.2530\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"
Menjadi: "C:\Program Files\1cv8\8.3.6.2530\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug


Simpan dan mulai layanan 1C. Semuanya sudah siap! Selamat men-debug!