ฉันจะดีบักข้อยกเว้นที่ไม่สามารถทำซ้ำได้ง่ายและเกิดขึ้นในสภาพแวดล้อมการผลิตได้อย่างไร


9

ฉันกำลังทำงานกับปัญหาที่เกิดข้อยกเว้นเฉพาะในสภาพแวดล้อมการผลิตของเรา ฉันไม่สามารถเข้าถึงสภาพแวดล้อมเหล่านี้และฉันไม่รู้ว่าข้อยกเว้นนี้หมายถึงอะไร ดูคำอธิบายข้อผิดพลาดฉันไม่สามารถเข้าใจสาเหตุได้

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

ใครช่วยกรุณาแนะนำฉันเกี่ยวกับวิธีการแก้ไขปัญหานี้หรือไม่


4
ควรย้ายสิ่งนี้ไปที่ StackOverflow หรือไม่ ฉันคิดว่าคุณจะได้รับการตอบสนองมากขึ้นที่นั่น
DXM

10
หนึ่งคำ: การบันทึก
quant_dev

1
@DXM - มันจะไม่เป็นหัวข้อสำหรับ Stack Overflow เนื่องจากมันกว้างเกินไป OP คือหลังจากกลยุทธ์และเทคนิคมากกว่าการแก้ปัญหาเฉพาะ หากรหัสที่ล้มเหลวนั้นรวมอยู่ด้วยบางทีมันอาจทำงานได้กับ Stack Overflow
ChrisF

จากประสบการณ์ของฉันปัญหาส่วนใหญ่เช่นนี้เกิดขึ้นจากปัญหาการกำหนดค่าความปลอดภัยและอาจเป็นเรื่องยากที่จะเข้าใจ ดังที่คนอื่น ๆ พูดถึงการบันทึกที่ดีจะช่วยเปิดเผย
jfrankcarr

คำตอบ:


18

โดยทั่วไปแล้วการบันทึกการดีบักที่ดีกว่า คิดออกสิ่งที่คุณต้องการรู้เพิ่มลงในรหัสและมีในบันทึกเพื่อให้คุณสามารถทำงานได้ การจับรายละเอียดเพิ่มเติมเกี่ยวกับสภาพแวดล้อมในขณะนั้นก็ช่วยได้เช่นกัน - สิ่งที่ร้องขอเมื่อใด ฯลฯ

โดยเฉพาะฉันจะมองหารูปแบบทั่วไปในไคลเอนต์ที่กดปุ่มนี้ - และหากคุณพบการเพิ่มประสิทธิภาพหนึ่ง - แต่จากนั้นไปและจับการรับส่งข้อมูลเลเยอร์ TCP

การดูข้อความ SSL ที่แลกเปลี่ยนควรให้ความคิดกับคุณว่ามีอะไรผิดปกติในโปรโตคอลหรืออย่างน้อยคุณสมบัติทั่วไปของคำขอคืออะไร เมื่อคุณมีที่ควรจะใกล้ชิดกับการดีบั๊ก

ในฐานะผู้แนะนำฉันคิดว่าสิ่งนี้มาจากหนึ่งในสามสิ่ง:

  1. บางสิ่งที่ไม่ได้พูดถึง SSL กับพอร์ต SSL (การสแกนพอร์ตเป็นเรื่องปกติ แต่ HTTP ไปยังพอร์ต HTTPS ก็เกิดขึ้นเช่นกัน)
  2. ไคลเอ็นต์ไม่แชร์ชุดของ ciphers ที่ยอมรับได้กับเซิร์ฟเวอร์
  3. ไคลเอนต์มีใบรับรองและเซิร์ฟเวอร์มีแบบ hissy-fit (ผิดปกติ แต่เป็นไปได้)

1
บางทีเซิร์ฟเวอร์อาจเสนอใบรับรองที่ลงนามด้วยตนเองหรือลงนามโดย CA ซึ่งลูกค้าไม่ทราบ / ไว้วางใจ
Carlos Campderrós

ฉันคิดว่าฉันเคยเห็น # 3 เกิดขึ้นเมื่อฝ่ายใดฝ่ายหนึ่งหมดอายุใบรับรอง
FrustratedWithFormsDesigner

ฉันได้ทำการแก้ไขข้อบกพร่องเล็กน้อยในระบบการผลิต ฉันไม่เคยใช้โปรแกรมดีบั๊กมาก่อนเลยนั่นคือการบันทึกหรือการเขียนค่าคีย์ไปยังส่วนใดส่วนหนึ่งของหน้าจอ
Loren Pechtel

ขอบคุณสำหรับคำแนะนำของคุณฉันแน่ใจว่ามีวิธีปฏิบัติเพื่อแก้ไขข้อบกพร่องการผลิต
C4CodeE4Exe

4

ฉันขอแนะนำให้ใช้กลยุทธ์การบันทึกที่มีระดับการบันทึกสูงสุดที่กำหนดค่าได้ โปรแกรมอรรถประโยชน์เช่น log4j ( http://logging.apache.org/log4j/ , http://en.wikipedia.org/wiki/Log4j ) อาจทำงานได้

ระดับการบันทึกที่กำหนดค่าได้ (หรือ verbosity) เป็นสิ่งสำคัญที่จะสามารถค้นหาสาเหตุของข้อผิดพลาดได้โดยอาจไม่ต้องปรับใช้ซอฟต์แวร์ของคุณอีกครั้ง

หากกลยุทธ์ดังกล่าวไม่เพียงพอที่จะค้นหาข้อผิดพลาดให้ลองค้นหาวิธีการผลิต / อ่านบันทึกที่ผลิตโดยแอปพลิเคชันที่คุณสื่อสารด้วย

คุณอาจใช้กลไกบางอย่างเพื่อรับข้อมูลเพิ่มเติมโดยอัตโนมัติเกี่ยวกับข้อผิดพลาดทางอีเมล

โดยทั่วไปคุณสามารถอ่านบทความเกี่ยวกับเครื่องมือซึ่งเป็นหัวข้อที่มีขนาดใหญ่กว่าซึ่งรวมถึงการบันทึกและการติดตาม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.