Szeto Consultants

Minta Saran & Diskusi: Best Practices Debugging Odoo (Terutama Custom Module)

Minta Saran & Diskusi: Best Practices Debugging Odoo (Terutama Custom Module)

Diposting pada 18 Jun 2026, 19:54
Ditanyakan oleh: Fahmi

Halo rekan-rekan praktisi Odoo di sini!

Saya Fahmi, staf IT di sebuah perusahaan yang kebetulan sedang intensif menggunakan Odoo ERP. Belakangan ini kami cukup sering mengembangkan custom module atau melakukan integrasi baru, dan pastinya sering ketemu kendala yang butuh debugging.

Nah, yang jadi pertanyaan, bagaimana sih workflow atau best practices rekan-rekan saat melakukan debugging di Odoo? Terutama untuk kasus-kasus seperti:
1. Error di custom module yang kita buat (baik itu Python maupun XML/JS).
2. Masalah performa saat query database atau di tampilan UI.
3. Kendala saat proses upgrade atau migrasi data.

Biasanya saya mengandalkan log Odoo, browser developer tools, atau aktifkan debug mode `?debug=1` untuk mencari tahu. Tapi kadang masih suka bingung kalau errornya tersembunyi atau butuh tracing yang lebih dalam, apalagi kalau sudah di environment produksi.

Mungkin ada tips & trik khusus, tools yang biasa dipakai (selain yang standar), atau metode yang lebih efektif untuk menelusuri akar masalah di Odoo? Sangat terbuka untuk sharing pengalaman debugging di development environment maupun staging/production.

Terima kasih banyak sebelumnya atas sharing ilmunya!

Balasan (1)

Admin Odoo ForumAdmin & AI Support18 Jun 2026, 19:54
Halo Mas Fahmi, selamat datang di diskusi komunitas Odoo Indonesia!

Wah, pertanyaan Mas Fahmi ini memang sangat relevan dan sering jadi "PR" besar buat kita semua yang bergelut dengan Odoo, apalagi kalau sudah masuk ranah custom module. Senang sekali bisa berbagi pengalaman dan best practices soal debugging ini. Apa yang Mas Fahmi lakukan sejauh ini (log Odoo, browser dev tools, `?debug=1`) itu sudah fondasi yang sangat bagus lho! Itu memang senjata wajib kita.

Mari kita coba bedah lebih dalam ya, Mas Fahmi, terutama untuk kasus-kasus yang Mas Fahmi sebutkan.






### Workflow & Best Practices Debugging Odoo

Secara umum, prinsip debugging itu mirip di mana-mana: reproduksi masalah, isolasi penyebab, dan verifikasi perbaikan. Tapi di Odoo, ada beberapa trik dan tools tambahan yang bisa kita pakai.




#### 1. Error di Custom Module (Python, XML, JS)

Ini area yang paling sering kita sentuh, kan?

Untuk Python Errors:
Perdalam Odoo Logs: Jangan cuma baca errornya, tapi juga lihat traceback lengkapnya. Seringkali baris pertama error itu bukan akar masalah, tapi ada di beberapa baris di atasnya yang mengindikasikan module atau fungsi mana yang memicu. Pastikan juga level logging Odoo-nya sudah cukup detail di lingkungan pengembangan (misalnya `log_level = debug`).
Gunakan Debugger (PyCharm/VS Code): Ini adalah "senjata pamungkas" untuk kode Python. Dengan IDE seperti PyCharm atau VS Code, Mas Fahmi bisa meletakkan breakpoint di kode Python dan menjalankan Odoo dalam mode debug. Ini memungkinkan kita melangkah baris per baris (step-by-step), melihat nilai variabel secara langsung, dan memahami aliran eksekusi kode. Ini jauh lebih efektif daripada `_logger.info()` manual untuk tracing yang kompleks.
`_logger` yang Strategis: Kalau debugger belum memungkinkan (misalnya di staging tanpa akses SSH interaktif), tambahkan `_logger.debug("Nilai variabel X: %s", x)` di titik-titik krusial. Pastikan `log_level` Odoo-nya `debug` agar log ini muncul.
Database Rollback (Development Only): Di lingkungan pengembangan, jika ada error di tengah transaksi, Mas Fahmi bisa coba tambahkan `raise UserError("Debugging: Something went wrong!")` di akhir `try` block jika ada `except`. Atau, gunakan `_cr.rollback()` dalam script debugging (hati-hati, jangan di production!) untuk memastikan database bersih dari perubahan yang tidak lengkap akibat error.

Untuk XML Errors:
Odoo Error Messages: Odoo biasanya cukup spesifik dalam memberitahu kesalahan XML (misalnya `Invalid view definition` atau `Missing required attribute 'name'`). Perhatikan detail pesan errornya.
`?debug=1` > `Developer Tools` > `Edit View`: Di mode debug, klik ikon kumbang (developer tools) lalu pilih `Edit View` (misalnya `Edit Form View` atau `Edit Tree View`). Ini akan membuka definisi XML dari view tersebut. Jika ada error di XML, seringkali Odoo akan menyoroti baris yang bermasalah. Ini sangat membantu untuk view yang rumit.
Validasikan XML: Pastikan struktur XML-nya valid secara sintaksis. Cek tag pembuka dan penutup, atribut yang wajib ada, dan penulisan field yang benar (misalnya `name="x_field"`).

Untuk JavaScript Errors:
Browser Developer Tools (Console & Sources): Ini masih tools terbaik.
Console: Lihat pesan error, warning, dan log dari JS. Jangan lupakan juga network tab untuk melihat respons dari RPC call ke server.
Sources: Mas Fahmi bisa meletakkan breakpoint di file JS custom module Mas Fahmi. Ini memungkinkan Mas Fahmi melangkah baris per baris kode JavaScript dan melihat nilai variabel secara real-time. Ini mirip dengan debugger Python tapi di sisi browser.
`console.log()`: Sama seperti `_logger` di Python, `console.log()` sangat berguna untuk menampilkan nilai variabel atau menandai titik eksekusi di kode JS.




#### 2. Masalah Performa (Query Database atau UI)

Ini butuh pendekatan yang sedikit berbeda, Mas Fahmi.

Untuk Query Database:
Aktifkan `odoo.sql_debug`: Di konfigurasi Odoo (file `.conf`), tambahkan `sql_debug = True`. Ini akan membuat Odoo mencatat setiap query SQL yang dieksekusi beserta waktunya ke log. Mas Fahmi bisa mencari query yang berjalan sangat lambat.
PostgreSQL `EXPLAIN ANALYZE`: Setelah Mas Fahmi mengidentifikasi query yang lambat dari log Odoo, ambil query tersebut dan jalankan di client PostgreSQL (misalnya pgAdmin atau `psql`) dengan prefiks `EXPLAIN ANALYZE`. Ini akan memberikan rencana eksekusi query secara detail, menunjukkan bagian mana dari query yang paling memakan waktu, dan apakah index digunakan dengan benar.
Database Indexing: Pastikan kolom-kolom yang sering digunakan dalam kondisi `WHERE` atau `JOIN` memiliki index yang sesuai. Odoo sudah punya banyak index default, tapi untuk custom field atau filter yang sangat spesifik, Mas Fahmi mungkin perlu menambahkan index manual.
Optimasi ORM: Hindari N+1 query problem. Gunakan `search_read()` dengan `fields` yang spesifik, gunakan `prefetch_sql` di ORM untuk field relasi, dan manfaatkan `_inherits` atau `_columns` yang tepat.
Query Builder di Odoo Shell: Bisa juga gunakan Odoo Shell (`odoo-bin shell`) untuk mencoba berbagai query ORM dan melihat performanya secara interaktif.

Untuk UI Performance:
Browser Developer Tools (Performance Tab): Fitur ini sangat canggih. Mas Fahmi bisa merecord aktivitas browser saat UI Odoo terasa lambat, lalu menganalisis timeline untuk melihat apa yang memakan waktu: apakah rendering DOM, eksekusi JavaScript, atau waktu tunggu jaringan.
Optimasi Frontend: Minimalkan jumlah field di view yang kompleks jika tidak semua field perlu ditampilkan secara bersamaan. Hindari komputasi JavaScript yang berat di sisi klien jika bisa dipindahkan ke sisi server.
`?debug=1` > `Profile Odoo Server`: Ini adalah tools bawaan Odoo di mode debug. Klik ikon kumbang, lalu pilih `Profile Odoo Server`. Ini akan merekam panggilan fungsi di sisi server saat Mas Fahmi berinteraksi dengan UI, memberikan visualisasi flame graph atau daftar fungsi yang paling banyak memakan waktu. Sangat berguna untuk mengidentifikasi bottleneck di backend yang memengaruhi UI.




#### 3. Kendala saat Upgrade atau Migrasi Data

Ini area yang paling bikin deg-degan, Mas Fahmi. Kuncinya adalah persiapan dan lingkungan yang terkontrol.

Selalu di Lingkungan Staging/Development Dulu: JANGAN PERNAH melakukan upgrade atau migrasi langsung di produksi. Selalu siapkan environment staging yang identik dengan produksi.
Backup, Backup, Backup: Ini hukum mutlak. Backup database dan filestore sebelum memulai proses upgrade/migrasi.
Verifikasi Log File: Selama proses upgrade, Odoo akan mencatat semua aktivitas ke log. Pastikan Mas Fahmi memantau log file secara real-time. Error selama migrasi seringkali sangat eksplisit di log. Ubah `log_level` ke `debug` jika perlu detail lebih.
Jalankan Upgrade Module per Module: Jika Mas Fahmi melakukan upgrade module custom, kadang lebih baik menjalankannya dari command line satu per satu: `odoo-bin -c odoo.conf -u nama_module`. Ini bisa memberikan output error yang lebih jelas di terminal daripada jika dijalankan dari UI Odoo.
Migration Scripts: Untuk migrasi data yang kompleks antar versi Odoo (misalnya Odoo 14 ke 15), Mas Fahmi mungkin perlu membuat migration scripts Python di custom module Mas Fahmi. Di dalam script ini, gunakan `_logger` secara ekstensif untuk memantau progres dan menangkap error.
Data Cleaning/Preprocessing: Sebelum migrasi, kadang Mas Fahmi perlu membersihkan atau menyesuaikan data di database lama agar kompatibel dengan skema database Odoo yang baru.




#### Tips & Trik Tambahan Lainnya:

Version Control System (Git): Pastikan semua kode custom module Mas Fahmi ada di Git. Ini memungkinkan Mas Fahmi untuk melacak perubahan, kembali ke versi sebelumnya jika ada bug baru muncul, dan bekerja sama dalam tim.
IDE (PyCharm/VS Code): Sudah saya sebutkan, tapi ini sangat penting. Fitur seperti auto-completion, linting, dan refactoring akan sangat membantu mengurangi bug di awal.
Database Client (pgAdmin, DBeaver): Akses langsung ke database untuk memeriksa data, struktur tabel, atau menjalankan query kustom sangat penting untuk debugging data.
Testing: Ini bukan debugging langsung, tapi unit test dan integration test (menggunakan framework testing Odoo) bisa menangkap bug sebelum mereka mencapai produksi. Investasi di testing akan mengurangi waktu debugging di kemudian hari.
Komunitas Odoo: Jangan ragu mencari di forum atau bertanya di komunitas seperti ini jika Mas Fahmi stuck. Seringkali seseorang sudah menghadapi masalah serupa.




Debugging di Odoo, apalagi dengan custom module, memang seni dan ilmu tersendiri. Semakin sering berlatih dan mencoba berbagai tools di atas, Mas Fahmi akan semakin terasah instingnya dalam menemukan akar masalah.

Semoga sharing ini membantu Mas Fahmi dan rekan-rekan Sobat Odoo lainnya ya! Semangat terus explore Odoo-nya!

Berikan Tanggapan

⚠️ Anti-Spam Aktif: Dilarang menyertakan tautan/URL di dalam form ini.
Butuh Konsultasi Odoo? 👋
Scroll to Top