Bagaimana saya bisa men-debug pengecualian yang tidak mudah direproduksi dan hanya terjadi di lingkungan produksi?

9

Saya sedang mengerjakan masalah di mana pengecualian hanya terjadi di lingkungan produksi kami. Saya tidak memiliki akses ke lingkungan ini, saya juga tidak tahu apa arti pengecualian ini. Melihat deskripsi kesalahan, saya tidak dapat memahami penyebabnya.

javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

Apakah seseorang tolong beri tahu saya cara mendekati masalah semacam ini?

C4CodeE4Exe
sumber
4
haruskah ini dipindahkan ke StackOverflow? Saya pikir Anda akan mendapat lebih banyak tanggapan di sana.
DXM
10
Satu kata: logging.
quant_dev
1
@DXM - itu akan menjadi topik Stack Overflow, karena terlalu umum. OP lebih mengutamakan strategi dan teknik daripada solusi spesifik. Jika kode yang gagal dimasukkan maka mungkin itu dapat bekerja pada Stack Overflow.
ChrisF
Dalam pengalaman saya, sebagian besar masalah seperti ini muncul dari masalah konfigurasi keamanan dan mungkin sulit untuk dipecahkan. Seperti yang disebutkan orang lain, logging yang baik akan membantu mengungkapnya.
jfrankcarr

Jawaban:

18

Secara umum, logging debug lebih baik. Cari tahu apa yang ingin Anda ketahui, tambahkan ke kode, dan masukkan itu ke dalam log sehingga Anda bisa menyelesaikannya. Menangkap lebih detail lingkungan pada saat itu juga membantu - permintaan apa, kapan, dll.

Secara khusus, saya akan mencari pola umum di klien yang memukul ini - dan jika Anda menemukan satu mengoptimalkan - tetapi kemudian pergi dan menangkap lalu lintas lapisan TCP.

Melihat pesan SSL yang dipertukarkan harus memberi Anda beberapa gagasan tentang apa yang salah dalam protokol, atau setidaknya apa sifat umum dari permintaan tersebut. Setelah Anda memilikinya, itu seharusnya lebih dekat dengan debugged.

Sebagai panduan, saya kira ini berasal dari satu dari tiga hal:

  1. Sesuatu yang bukan SSL dibicarakan dengan port SSL. (pemindaian port umum, tetapi HTTP ke port HTTPS juga terjadi.)
  2. Klien tidak berbagi satu set kode yang dapat diterima dengan server.
  3. Klien menawarkan sertifikat, dan server memiliki hissy-fit. (Jarang, tetapi mungkin.)
Daniel Pittman
sumber
1
mungkin server menawarkan sertifikat yang ditandatangani sendiri atau ditandatangani oleh CA yang tidak diketahui / dipercaya oleh klien
Carlos Campderrós
Saya pikir saya telah melihat # 3 terjadi ketika salah satu pihak memiliki sertifikat yang kedaluwarsa.
FrustratedWithFormsDesigner
Saya telah melakukan sedikit debug pada sistem produksi. Belum pernah saya benar-benar menggunakan debugger, itu selalu mencatat atau menulis nilai-nilai kunci ke bagian tertentu dari layar.
Loren Pechtel
terima kasih atas saran Anda. Saya yakin ada cara pragmatis untuk menyelesaikan bug produksi.
C4CodeE4Exe
4

Saya akan merekomendasikan untuk menggunakan strategi logging dengan tingkat log maksimum yang dapat dikonfigurasi. Utilitas seperti log4j ( http://logging.apache.org/log4j/ , http://en.wikipedia.org/wiki/Log4j ) dapat melakukan pekerjaan itu.

Level log yang dapat dikonfigurasi (atau verbositas) penting untuk dapat menemukan alasan kesalahan, mungkin tanpa harus menggunakan kembali perangkat lunak Anda.

Jika strategi semacam itu tidak cukup untuk menemukan kesalahan, cobalah untuk menemukan cara memproduksi / membaca log yang dihasilkan oleh aplikasi yang berkomunikasi dengan Anda.

Anda mungkin juga menerapkan beberapa mekanisme untuk secara otomatis mendapatkan informasi lebih lanjut tentang kesalahan melalui email.

Secara umum, Anda dapat membaca beberapa artikel tentang instrumentasi, yang merupakan topik lebih besar yang mencakup pencatatan dan penelusuran.

PL
sumber