Mẹo để gỡ lỗi với rất ít thông tin? [đóng cửa]


11

Tôi đã kế thừa một dự án với một cơ sở mã khá lớn và nhà phát triển ban đầu hiếm khi trả lời email. Có rất nhiều cách khác nhau để thực hiện một số điều trong đó và tôi không biết tất cả chúng. Rất nhiều mã trùng lặp dọc theo các đường dẫn này (chứ không phải là các hàm được bao gồm bởi 5 trang tương tự như nhau, mã được sao chép trên 5 trang) và một số vấn đề tinh tế trong cơ sở dữ liệu (tất cả chúng ta đã nghe nói về mã spaghetti , nhưng bạn đã bao giờ nghe nói về cơ sở dữ liệu spaghetti chưa?)

Tất cả điều này tôi có thể giải quyết hầu hết thời gian không có vấn đề.

Vấn đề là khi một khách hàng tìm thấy một lỗi ở đâu đó. Họ thường sẽ gửi một ảnh chụp màn hình về vấn đề kết thúc và nói, "Bạn có thể xem cái này không?" trong khi làm nổi bật điều cụ thể trên trang đó là sai, và đôi khi những gì được mong đợi. Rất ít thông tin được đưa ra, và cố gắng nói chuyện với họ và nhận được nhiều hơn (chẳng hạn như những gì họ đã làm để có kết quả) giống như nhổ răng.

Về cơ bản, nó nắm rõ điều này:

  • Cơ sở mã lớn và phức tạp Tôi không quen thuộc 100% với
  • Nhiều cách mọi thứ có thể đi sai
  • Rất ít thông tin về cách một lỗi xuất hiện

Có ai có bất kỳ lời khuyên, thủ thuật, đề xuất, vv về cách gỡ lỗi loại này không?


"Bạn đã bao giờ nghe nói về một cơ sở dữ liệu spaghetti?" Tôi đã từng làm việc tại một công việc mà cơ sở dữ liệu của sản phẩm đã phát triển liên tục trong hơn mười năm, với rất ít nỗ lực để tái cấu trúc nó khi các yêu cầu tăng lên (tăng trưởng, tăng trưởng và phát triển). Tôi đã có một đồng nghiệp có toàn bộ công việc được rút ra để "Hiểu cơ sở dữ liệu, tạo các truy vấn SQL để trích xuất bất cứ điều gì hữu ích từ nó" - và cô ấy không thể thiếu. Tôi cảm nhận được nỗi đau của bạn.
BlairHippo

Để bổ sung, [đọc các bài đăng "gỡ lỗi tâm linh" trên blog của Raymond Chen] ( goo.gl/2KIH )!
Wizard79

Làm thế nào lớn là cơ sở mã? Mười KLOC hay 50 MLOC?
Basile Starynkevitch

Câu trả lời:


11

Khi tôi nhận được một cái gì đó như thế, tôi thường yêu cầu thêm thông tin. Không chắc chắn nơi bạn làm việc, nhưng ở đây nếu tôi không có đủ thông tin để tái tạo vấn đề tại địa phương, tôi có thể gửi lại vé được đánh dấu Không thể sao chép, với một yêu cầu để biết thêm thông tin và họ biết rằng không có gì được khắc phục cho đến khi Tôi có thể phá vỡ nó vào cuối của tôi.

Nếu khách hàng của bạn gặp khó khăn với việc mô tả các bước, hãy yêu cầu họ quay video screencap. Có một vài sản phẩm miễn phí có thể tạo ra chúng, chẳng hạn như Jing. Nó làm cho nó dễ dàng hơn nhiều khi bạn có thể xem chính xác những gì họ đang làm.

EDIT: Jing là một ý tưởng tốt khi tôi viết điều này một vài năm trước. Kể từ đó, họ đã sửa đổi trình cài đặt của họ để tải hệ thống của bạn lên với phần mềm "phần thưởng" mà bạn không bao giờ yêu cầu, vì vậy tôi không còn có thể giới thiệu nó. Có rất nhiều máy ghi âm màn hình xung quanh, mặc dù.


2
+1 Lời khuyên về âm thanh và tôi sẽ mở rộng nó thành: Họ có thể khiến lỗi xảy ra một cách đáng tin cậy không, hay nó không liên tục? Nếu điều đó xảy ra một cách đáng tin cậy, họ có thể hướng dẫn bạn qua các bước họ đã thực hiện để đến đó không?
BlairHippo

1
Nhìn vào tập tin nhật ký có thể giúp một chút.
pramodc84

11

Một khởi đầu tốt có thể là cuốn sách này .

văn bản thay thế

Tôi đang sử dụng định nghĩa dưới đây vì có vẻ như nhà phát triển không có mặt để hỗ trợ nó nữa.

Mã kế thừa là mã nguồn liên quan đến việc không còn được hỗ trợ.


Điều đáng buồn là, đây thậm chí không phải là mã kế thừa. Tôi khá chắc chắn rằng hầu hết những gì tôi đang làm đã được bắt đầu vào đầu năm nay.
Tarka

3
@Slokun - định nghĩa của "Mã di sản" trong cuốn sách không hoàn toàn giống với định nghĩa truyền thống của nó. Đó là một cuốn sách rất hay.
Austin Salonen

4

Tôi đã gặp một vấn đề tương tự vài năm trước và sự tăng cường lớn nhất đối với năng suất và làm sạch mã là tích hợp theo dõi lỗi vào hệ thống.

Chúng tôi đã sử dụng Fogormsz (tôi cho rằng họ vẫn làm Fogcux!) Và chúng tôi có thể xây dựng một cơ chế xử lý ngoại lệ trong đó người dùng có thể nhấn nút bất cứ khi nào một ngoại lệ được đưa ra và nó sẽ được đăng nhập ngay vào hệ thống của chúng tôi - không cần thêm cuộc gọi và không còn ảnh chụp màn hình. Với tùy chọn này, bạn lấy thông tin bạn cần thay vì cố gắng trích xuất thông tin từ người dùng. Âm thanh như một biến thể sẽ làm cho bạn một số tốt, đặc biệt là với một tùy chọn chụp ảnh màn hình.

Một điều khác bạn sẽ muốn bắt đầu làm là bắt đầu thêm đăng nhập. Bạn có thể muốn đi xa hơn khi ghi nhật ký mọi cuộc gọi phương thức với các giá trị đối số. Vì có vẻ như bạn đang làm việc với mã kế thừa (mã không có kiểm tra), việc ghi nhật ký này sẽ giúp bạn thêm các bài kiểm tra đơn vị phù hợp để bạn không lặp lại bất kỳ vấn đề nào.


Đối với một cơ sở mã lớn có sẵn, việc thêm ghi nhật ký tốt sẽ là một HELL của rất nhiều công việc. +1 vì nó có thể chứng minh là lựa chọn khả thi duy nhất nếu các lỗi không liên tục.
BlairHippo

@BlairHippo: Theo kinh nghiệm của tôi, nhưng đó là cái giá bạn phải trả với một cơ sở mã mà anh ấy mô tả. Nó gần như là khổ sở khi làm việc trong một cơ sở mã như vậy để bắt đầu với ...
Austin Salonen

Ghi nhật ký rất khó. Thêm ghi nhật ký ngoại lệ tự động là chuyện nhỏ và đáng để nỗ lực (tối thiểu) hàng ngàn lần. Hoặc ít nhất, nó ở Delphi. Không chắc chắn giải pháp nào tồn tại cho các ngôn ngữ khác, nhưng nó không quá khó đối với bất kỳ ngôn ngữ nào có xử lý ngoại lệ hợp lý.
Mason Wheeler

1

Lời khuyên chân thành nhất của tôi là bắt đầu tái cấu trúc nơi bạn có thể. Tôi không thể đếm số lần tôi chỉ thấy một bản tóm tắt chức năng để biết rằng nó không phải là bản sao đầy đủ 100%. Đó là 99,9% bản sao và 1 lỗi nhỏ, nhỏ dẫn đến lỗi. Bắt đầu thêm các bài kiểm tra đơn vị vào mọi thứ và nếu bạn có bộ phận QA hãy thử lấy một số tập lệnh kiểm thử tự động dành cho các phần của mã bạn đang làm việc.

Mặt khác, xem bao nhiêu đăng nhập để có thể tiêm vào mã. Đó là, nếu nó không có nhiều cách ghi nhật ký, bạn có thể thêm cờ vào mã để bắt đầu chọn ghi nhật ký dài hơn cho mục đích gỡ lỗi của riêng bạn. Đây là thứ bạn có thể bật và tắt người dùng nếu bạn có thể nhận được hộp thoại. Nó đã giúp tôi nhiều lần hơn tôi có thể đếm. Tôi thường nhận được "nó không hoạt động" mà không có hình ảnh của vấn đề. Tôi chỉ nói "gửi cho tôi tệp nhật ký."


0

Bắt đầu bằng cách viết bài kiểm tra đơn vị. Chọn một lớp hoặc một hàm và viết một tập các bài kiểm tra tương ứng với cách bạn nghĩ nó nên hoạt động. Nếu các bài kiểm tra thất bại, hãy tìm hiểu tại sao. Nếu đó là một lỗi - sửa nó. Nếu kỳ vọng của bạn hóa ra là sai, hãy tìm hiểu xem điều gì thực sự làm và sửa đổi các bài kiểm tra cho phù hợp.

Khi bạn có một bộ kiểm tra đơn vị làm việc hợp lý, bạn có một mạng lưới an toàn để thực hiện một số phép tái cấu trúc để làm cho mã sạch hơn.

Tiếp tục lặp đi lặp lại cho đến khi bạn hiểu cơ sở mã.

Không cần phải nói, đây là điều bạn nên làm trước thời hạn, không đáp ứng với báo cáo lỗi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.