คำถามติดแท็ก errors

9
ฉันเปลี่ยนลายเซ็นวิธีหนึ่งและตอนนี้มีข้อผิดพลาดมากกว่า 25,000 ข้อ เกิดอะไรขึ้น
ฉันเพิ่งเริ่มงานใหม่เมื่อไม่นานมานี้ซึ่งฉันกำลังทำงานกับแอปพลิเคชันขนาดใหญ่มาก (15M loc) ในงานก่อนหน้าของฉันเรามีแอปพลิเคชั่นขนาดใหญ่คล้าย ๆ กัน แต่ (เพื่อให้ดีขึ้นหรือแย่ลง) เราใช้ OSGi ซึ่งหมายความว่าแอปพลิเคชันนั้นถูกแบ่งออกเป็นไมโครไซต์จำนวนมากที่สามารถเปลี่ยนแปลงรวบรวมและนำไปใช้ได้อย่างอิสระ แอปพลิเคชันใหม่เป็นเพียงฐานรหัสขนาดใหญ่เพียงฐานเดียว ดังนั้นฉันจึงต้องเปลี่ยนอินเทอร์เฟซของคลาสนี้เพราะนั่นคือสิ่งที่เจ้านายของฉันขอให้ฉันทำ ตอนแรกพวกเขาเขียนด้วยสมมติฐานบางอย่างที่ไม่ได้พูดคุยกันดีเกินไปและในขณะที่พวกเขาหลีกเลี่ยงปัญหาของการปรับโครงสร้างใหม่เพราะมันเชื่อมโยงอย่างแน่นหนา ฉันเปลี่ยนอินเทอร์เฟซและตอนนี้มีข้อผิดพลาดมากกว่า 25,000 ข้อ ข้อผิดพลาดบางอย่างอยู่ในคลาสที่มีชื่อการทำให้เกิดเสียงที่สำคัญเช่น "XYZPriceCalculator" ซึ่งได้รับการตรวจสอบใหม่ไม่ควรทำลาย แต่ฉันไม่สามารถเริ่มแอปพลิเคชันเพื่อตรวจสอบว่ามันทำงานได้หรือไม่จนกว่าข้อผิดพลาดทั้งหมดจะได้รับการแก้ไข และหน่วยทดสอบจำนวนมากทดสอบโดยตรงว่าอินเตอร์เฟสหรือเชื่อมต่อกับคลาสพื้นฐานซึ่งอ้างอิงอินเตอร์เฟสนั้นดังนั้นการแก้ไขสิ่งเหล่านั้นจึงเป็นงานที่ใหญ่มากในตัวมันเอง นอกจากนี้ฉันไม่ทราบว่าชิ้นส่วนเหล่านี้เข้ากันได้อย่างไรดังนั้นแม้ว่าฉันจะเริ่มต้นได้ฉันก็ไม่รู้จริงๆว่ามันจะเป็นอย่างไรถ้าสิ่งต่าง ๆ แตกหัก ฉันไม่เคยประสบปัญหาเช่นนี้ในงานสุดท้ายของฉัน ฉันจะทำอย่างไร

5
“ ระดับ 256 บั๊ก” ในเกม Pacman สามารถถูกพิจารณาว่าเป็นเซกฟอลต์ที่ไม่มีการจัดการได้หรือไม่?
ฉันกำลังพยายามอธิบายข้อผิดพลาดในการแบ่งกลุ่มกับใครบางคนและฉันกำลังคิดถึงระดับ kill-screen ระดับ 256 ใน Pacman และวิธีที่มันถูกทริกเกอร์โดยจำนวนเต็มล้นและพฤติกรรมที่คล้ายคลึงกันคือ ความผิด ฉันต้องการบอกว่านี่เป็นตัวอย่างที่ดีของสิ่งที่ฉันเรียกว่า "segfault ที่ไม่สามารถจัดการได้" แต่ฉันอยากได้ความเห็นที่สองก่อนที่ฉันจะแพร่กระจายข้อมูลที่ผิดไป ฉันพยายามค้นหามัน แต่ทั้งหมดที่ฉันได้รับคือเอกสารเกี่ยวกับตัวมันเองรวมถึงความร่วมมือระหว่าง Hipster Whale และ Namco ดังนั้นคุณจะพิจารณาพฤติกรรมในระดับ 256 ของ Pacman ว่าเป็นตัวอย่างของการละเมิดการแบ่งส่วนที่ไม่ได้จัดการหรือไม่
51 memory  errors 

1
หมายเลข 92233720368547800 ของ paypal มาจากไหน [ปิด]
มีข่าวในเรื่องเกี่ยวกับผู้ชายคนหนึ่งที่บัญชี Paypal ได้รับเครดิตโดยไม่ตั้งใจกับ $ 92,233,720,368,547,800 หมายเลขนี้มาจากไหน ข้อผิดพลาดในการเขียนโปรแกรมแบบใดที่ทำให้ตัวเลขนี้มีจำนวนมากขึ้น?

13
การปฏิบัติที่แย่ที่สุดใน C ++, ข้อผิดพลาดทั่วไป [ปิด]
หลังจากอ่านคำพูดที่โด่งดังของ Linus Torvaldsฉันสงสัยว่าจริงๆแล้วอะไรคือข้อผิดพลาดทั้งหมดของโปรแกรมเมอร์ใน C ++ ฉันไม่ได้อ้างถึง typos หรือโปรแกรมที่ไม่ดีตามที่ได้รับการรักษาในคำถามนี้และคำตอบของมันแต่สำหรับข้อผิดพลาดระดับสูงที่ไม่ได้ตรวจพบโดยคอมไพเลอร์และไม่ส่งผลให้เกิดข้อบกพร่องที่เห็นได้ชัดในตอนแรก สิ่งที่ไม่น่าจะเป็นใน C แต่น่าจะเกิดขึ้นใน C ++ โดยผู้มาใหม่ที่ไม่เข้าใจความหมายของรหัสทั้งหมด ฉันยังยินดีต้อนรับคำตอบที่ชี้ให้เห็นถึงประสิทธิภาพที่ลดลงอย่างมากซึ่งมักจะไม่เกิดขึ้น ตัวอย่างของสิ่งที่อาจารย์คนหนึ่งของฉันเคยบอกฉันเกี่ยวกับตัวแยกวิเคราะห์ LR (1) ที่ฉันเขียน: คุณใช้อินสแตนซ์ของการสืบทอดและเวอร์ชวลไลซ์ที่ไม่จำเป็นจำนวนมากเกินไป การสืบทอดทำให้การออกแบบมีความซับซ้อนมากขึ้น (และไม่มีประสิทธิภาพเนื่องจากระบบย่อย RTTI (การอนุมานชนิดรันไทม์) และดังนั้นจึงควรใช้เฉพาะเมื่อมีความเหมาะสมเท่านั้นเช่นสำหรับการกระทำในตารางแยก เนื่องจากคุณใช้เทมเพลตอย่างเข้มข้นคุณจึงไม่จำเป็นต้องรับมรดก "

6
ข้อผิดพลาดนับพัน!
ฉันเพิ่งได้รับมอบหมายให้ทำโครงการใหม่ จริง ๆ แล้วโครงการเก่าเขียนใน ASP คลาสสิก ตอนนี้มีการเขียนแอปพลิเคชันเวอร์ชันใหม่ใน ASP.NET ล่าสุด แต่ไม่คาดว่าจะเป็น RTM ในขณะที่ (วันที่วางจำหน่ายโดยประมาณคือมกราคม 2560) ดังนั้นฉันต้องทำการบำรุงรักษาบางอย่างในแอปพลิเคชันเก่าจนกว่าจะสามารถ ทิ้ง นอกจากนี้ฉันรู้สึกว่าลูกค้าบางคนจะไม่เปลี่ยนไปใช้โปรแกรมใหม่ทันทีดังนั้นเวอร์ชันนี้อาจจะอยู่พักหนึ่ง และปัญหาคือมันเต็มไปด้วยข้อผิดพลาด บางส่วนของมันย้อนหลังไปถึงศตวรรษที่ผ่านมาเมื่อไม่มีมาตรฐานเว็บและฉันไม่สนใจเกี่ยวกับโหมด Quirks widthและheightคุณลักษณะแทน CSS, ตารางที่ใช้สำหรับการจัดวางเฟรมเซต ฯลฯ แต่โอ้ข้อผิดพลาดเหล่านั้นทั้งหมด! width="20px"ทั่วทุกสถานที่onchange="javascript:..."และในสถานที่ที่พวกเขาใช้ CSS style="width:20"และstyle="width=20px"เป็นเรื่องธรรมดา ไม่ต้องพูดถึงสายมากมายที่มีความขัดแย้งwidthและstyleคุณลักษณะ เป็นต้น ฯลฯ เป็นผลให้แอปพลิเคชันเว็บทำงานภายใต้ IE เท่านั้นและในโหมดความเข้ากันได้เท่านั้น เป็นที่ชัดเจนว่านักพัฒนาไม่เคยดูความถูกต้องของรหัสเฉพาะเมื่อสิ่งที่ออกมาดูเหมือนสิ่งที่พวกเขามีอยู่ในใจมันควรมีลักษณะเช่นนั้น และฉันไม่รู้วิธีจัดการกับสิ่งนั้น ฉันพบว่าเป็นไปไม่ได้ที่จะหลับตากับข้อผิดพลาดเหล่านั้นในขณะที่มองหารหัสเพื่อหาข้อผิดพลาดอื่น ๆ แน่นอนว่าฉันสามารถทำการค้นหาทั่วโลกและแทนที่เพื่อให้ได้ปัญหาส่วนใหญ่ออกนอกเส้นทาง แต่นั่นหมายความว่าการมอบหมายครั้งแรกของฉันจะประกอบด้วยไฟล์. asp ที่มีการเปลี่ยนแปลงนับพันรายการ ฉันจะทำสิ่งนั้นได้ไหม

10
ทีมของฉันจะหลีกเลี่ยงข้อผิดพลาดบ่อยครั้งได้อย่างไรหลังจากทำการเปลี่ยนใหม่
เพื่อให้คุณมีพื้นฐานเล็กน้อย: ฉันทำงานให้กับ บริษัท ที่มีผู้พัฒนา Ruby on Rails ประมาณสิบสองคน (+/- ฝึกงาน) การทำงานระยะไกลเป็นเรื่องปกติ ผลิตภัณฑ์ของเราทำจากสองส่วนคือแกนที่ค่อนข้างอ้วนและบางขึ้นกับโครงการขนาดใหญ่ที่ลูกค้าสร้างขึ้น โครงการของลูกค้ามักจะขยายหลัก การเขียนทับคุณสมบัติหลักไม่ได้เกิดขึ้น ฉันอาจเพิ่มว่าแกนกลางมีบางส่วนที่ไม่ดีซึ่งต้องการการรีแฟคเตอร์ด่วน มีสเปค แต่ส่วนใหญ่สำหรับโครงการของลูกค้า ส่วนที่แย่ที่สุดของแกนนั้นยังไม่ได้ทดสอบ (ไม่ใช่อย่างที่ควรจะเป็น ... ) ผู้พัฒนาแบ่งออกเป็นสองทีมโดยทำงานร่วมกับ PO หนึ่งหรือสองตัวสำหรับการวิ่งแต่ละครั้ง โดยปกติโครงการของลูกค้าหนึ่งโครงการจะเชื่อมโยงกับหนึ่งในทีมและ POs อย่างเคร่งครัด ตอนนี้ปัญหาของเรา: ค่อนข้างบ่อยเราแบ่งเนื้อหาของกันและกัน บางคนจากทีม A ขยายหรือสร้างคุณลักษณะหลัก Y อีกครั้งทำให้เกิดข้อผิดพลาดที่ไม่คาดคิดสำหรับโครงการลูกค้าของทีม B ส่วนใหญ่การเปลี่ยนแปลงจะไม่ถูกประกาศในทีมดังนั้นข้อบกพร่องที่เกิดขึ้นแทบจะไม่คาดคิดเสมอไป ทีม B รวมถึง PO คิดเกี่ยวกับคุณสมบัติ Y ว่าเสถียรและไม่ได้ทดสอบก่อนปล่อยโดยไม่ทราบการเปลี่ยนแปลง จะกำจัดปัญหาเหล่านั้นได้อย่างไร? 'เทคนิคการประกาศ' แบบไหนที่คุณสามารถแนะนำฉันได้บ้าง

11
วิธีสอนผู้ใช้ / ลูกค้าให้ส่งคำอธิบายข้อผิดพลาดที่ดีขึ้น
ฉันมักจะต้องจัดการกับลูกค้าหรือผู้ใช้ที่รายงานข้อผิดพลาดในแอปพลิเคชัน ส่วนใหญ่เนื้อหาของพวกเขาเป็นสิ่งที่ไร้ประโยชน์เช่น ข้อผิดพลาด !!! x ไม่ทำงาน ไม่มีข้อมูลเพิ่มเติม สำหรับการแก้ไขปัญหาฉันต้องขอรายละเอียดทุกอย่างซึ่งมักใช้เวลานานกว่าการแก้ไขปัญหาเอง ข้อมูลการส่งอื่น ๆ ในรูปแบบที่ไม่เหมาะเช่นภาพหน้าจอ (ของการบันทึกข้อมูลไม่ใช่ข้อผิดพลาด) แม้ว่าพวกเขาจะสามารถส่งลิงค์ (เราสามารถเข้าถึงระบบ) และอื่น ๆ คุณจะบอกผู้ใช้ / ลูกค้าของคุณให้อธิบายปัญหาเกี่ยวกับรายละเอียดเพิ่มเติมเพื่อให้กระบวนการทั้งหมดนั้นง่ายขึ้นสำหรับทั้งสองฝ่าย? แก้ไข คำถามนี้เป็นคำถามเกี่ยวกับทักษะทางสังคมมากกว่าวิธีการรวบรวมบันทึกและข้อมูลข้อผิดพลาดแบบเป็นโปรแกรม ฉันตระหนักถึงความจริงที่ว่านี่ควรเป็นส่วนหนึ่งของการออกแบบซอฟต์แวร์ที่ดี

8
ใน Java สิ่งใดบ้างที่มีการตรวจสอบข้อยกเว้นที่ดีสำหรับ [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ข้อยกเว้นที่ตรวจสอบของ Java ได้รับการกดที่ไม่ดีในช่วงหลายปีที่ผ่านมา สัญญาณบอกคือมันเป็นภาษาเดียวในโลกที่มี (ไม่ใช่ภาษา JVM อื่น ๆ เช่น Groovy และ Scala) ไลบรารี Java ที่มีชื่อเสียงเช่น Spring และ Hibernate ก็ไม่ควรใช้ ฉันพบการใช้งานส่วนตัวสำหรับพวกเขา ( ในตรรกะทางธุรกิจระหว่างเลเยอร์) แต่อย่างอื่นฉันก็ค่อนข้างยกเว้นการตรวจสอบการต่อต้าน มีการใช้งานอื่นที่ฉันไม่เข้าใจหรือไม่?

6
วิธีที่ดีที่สุดในการจัดการการบันทึกข้อผิดพลาดสำหรับข้อยกเว้นคืออะไร
บทนำ หากมีข้อผิดพลาดเกิดขึ้นในเว็บไซต์หรือระบบแน่นอนว่ามีประโยชน์ในการบันทึกและแสดงข้อความสุภาพพร้อมรหัสอ้างอิงสำหรับข้อผิดพลาด และถ้าคุณมีระบบจำนวนมากคุณไม่ต้องการให้ข้อมูลนี้กระจายไปทั่ว - มันเป็นการดีที่จะมีศูนย์กลางรวมอยู่ที่เดียว ในระดับที่ง่ายที่สุดสิ่งที่จำเป็นทั้งหมดคือรหัสที่เพิ่มขึ้นและการดัมพ์แบบต่อเนื่องของรายละเอียดข้อผิดพลาด (และอาจเป็น "ศูนย์รวม" ที่เป็นกล่องจดหมายของอีเมล) ที่ปลายอีกด้านของสเปกตรัมอาจเป็นฐานข้อมูลปกติที่ช่วยให้คุณกดปุ่มและดูกราฟข้อผิดพลาดต่อวันหรือระบุว่าข้อผิดพลาดประเภทใดที่พบบ่อยที่สุดในระบบ X คือเซิร์ฟเวอร์ A มีฐานข้อมูลมากกว่าหรือไม่ ข้อผิดพลาดการเชื่อมต่อกว่าเซิร์ฟเวอร์ B และอื่น ๆ สิ่งที่ฉันอ้างถึงที่นี่คือการบันทึกข้อผิดพลาด / ข้อยกเว้นระดับรหัสโดยระบบรีโมต - ไม่ใช่การติดตามปัญหา "ตามมนุษย์" เช่นเสร็จสิ้นกับ Jira, Trac เป็นต้น คำถาม ฉันกำลังมองหาแนวคิดจากนักพัฒนาที่ใช้ระบบประเภทนี้โดยเฉพาะเกี่ยวกับ: ฟีเจอร์สำคัญที่คุณขาดไม่ได้คืออะไร? อะไรคือสิ่งที่ดีที่มีคุณสมบัติที่ช่วยให้คุณประหยัดเวลาได้จริง? คุณลักษณะใดบ้างที่อาจเป็นความคิดที่ดี แต่จริงๆแล้วมันไม่มีประโยชน์อะไรเลย ตัวอย่างเช่นฉันว่าฟังก์ชัน "แสดงรายการที่ซ้ำกัน" ซึ่งระบุข้อผิดพลาดหลายครั้ง (โดยไม่ต้องกังวลเกี่ยวกับรายละเอียด 'ไม่สำคัญ' ที่อาจแตกต่างกัน) เป็นสิ่งสำคัญ ปุ่มสำหรับ "สร้างปัญหาใน [Jira / etc] สำหรับข้อผิดพลาดนี้" ฟังดูเหมือนเป็นการประหยัดเวลาได้ดี สิ่งที่ฉันตามมาคือประสบการณ์การใช้งานจริงจากผู้คนที่ใช้ระบบดังกล่าวโดยเฉพาะการสำรองข้อมูลด้วยเหตุใดคุณลักษณะจึงยอดเยี่ยม / …

2
ความแตกต่างระหว่างความทนทานและการยอมรับข้อผิดพลาดคืออะไร?
ระบบ / โปรแกรม / อัลกอริทึมแบบกระจาย / ... มักถูกอธิบายด้วยเพรดิเคตที่ทนทานหรือข้อผิดพลาดที่ยอมรับได้ อะไรคือความแตกต่าง? รายละเอียด: เมื่อฉัน google สำหรับ + ​​strong + "fault-tolerant" ฉันจะได้รับสองครั้งเท่านั้นทั้งไม่ช่วยเหลือ เมื่อฉันไปหาคำศัพท์ฉันพบเอกสารจำนวนมากที่มีทั้งสองคำอยู่ในชื่อของพวกเขา น่าเสียดายที่พวกเขาไม่ได้กำหนดคำอย่างแม่นยำ :( แต่เนื่องจากพวกเขาใช้ทั้งสองคำดูเหมือนว่าทั้งสองไม่มีนัยใด ๆ

2
คอมไพเลอร์ควรรายงานข้อผิดพลาดและคำเตือนอย่างไร
ฉันไม่ได้วางแผนที่จะเขียนคอมไพเลอร์ในอนาคตอันใกล้นี้ ยังฉันค่อนข้างสนใจกับเทคโนโลยีคอมไพเลอร์และสิ่งนี้จะทำให้ดีขึ้นได้อย่างไร เริ่มต้นด้วยภาษาที่คอมไพล์คอมไพเลอร์ส่วนใหญ่มีระดับข้อผิดพลาดสองระดับ: คำเตือนและข้อผิดพลาดส่วนใหญ่เป็นสิ่งที่ไม่ร้ายแรงที่คุณควรแก้ไขเป็นครั้งแรกและข้อผิดพลาดที่บ่งบอกเวลาส่วนใหญ่ที่ไม่สามารถสร้างเครื่องได้ (หรือไบต์) รหัสจากอินพุต แม้ว่านี่จะเป็นคำจำกัดความที่ค่อนข้างอ่อนแอ ในบางภาษาเช่น Java คำเตือนบางอย่างเป็นไปไม่ได้ที่จะกำจัดโดยไม่ใช้@SuppressWarningคำสั่ง นอกจากนี้ Java ยังจัดการปัญหาที่ไม่ร้ายแรงบางอย่างเป็นข้อผิดพลาด (เช่นโค้ดที่เข้าไม่ถึงใน Java ทำให้เกิดข้อผิดพลาดด้วยเหตุผลที่ฉันต้องการทราบ) C # ไม่มีปัญหาเดียวกัน แต่มีเพียงเล็กน้อย ดูเหมือนว่าการรวบรวมเกิดขึ้นในหลายรอบและการส่งผ่านที่ล้มเหลวจะป้องกันการส่งต่อจากการดำเนินการต่อไป ด้วยเหตุนี้ข้อผิดพลาดที่คุณได้รับเมื่องานสร้างล้มเหลวมักจะประเมินค่าต่ำเกินไป ในการรันครั้งเดียวอาจกล่าวได้ว่าคุณมีข้อผิดพลาดสองข้อ แต่เมื่อคุณแก้ไขข้อผิดพลาดบางทีคุณอาจได้รับ 26 ข้อใหม่ การขุดไปที่ C และ C ++ เพียงแสดงชุดค่าผสมที่ไม่ดีในจุดอ่อนการวินิจฉัยการคอมไพล์ของ Java และ C # (แม้ว่าอาจจะมีความแม่นยำมากกว่าที่จะกล่าวว่า Java และ C # เพิ่งไปได้ด้วยปัญหาครึ่งหนึ่ง) คำเตือนบางอย่างควรเป็นข้อผิดพลาด (เช่นเมื่อเส้นทางโค้ดไม่คืนค่าทั้งหมด) และยังคงเป็นคำเตือนเพราะฉันคิดว่าในเวลาที่พวกเขาเขียนมาตรฐานเทคโนโลยีคอมไพเลอร์ก็ไม่ดีพอที่จะทำให้เป็นแบบนี้ ตรวจสอบที่จำเป็น ในหลอดเลือดดำเดียวกันคอมไพเลอร์มักตรวจสอบมากกว่ามาตรฐานกล่าว แต่ยังคงใช้ระดับข้อผิดพลาดคำเตือน "มาตรฐาน" สำหรับการค้นพบเพิ่มเติม …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.