Lợi nhuận:
- Khả năng nhanh chóng thu hẹp các nguyên nhân gốc rễ có thể xảy ra bằng cách cung cấp bản ghi sự cố (dấu vết ngăn xếp) cho trí tuệ nhân tạo với bối cảnh kịch bản và mã liên quan
- Khả năng giải quyết vĩnh viễn nguyên nhân gốc rễ thay vì xác nhận chẩn đoán của AI như một giả thuyết trong mã và kiểm tra cũng như làm im lặng triệu chứng
- Bảo vệ quyền riêng tư trong khi gỡ lỗi bằng cách che giấu dữ liệu cá nhân trong hồ sơ và nhật ký sự cố
Ứng dụng nào cũng có lỗi; Điều tạo nên sự khác biệt của một nhà phát triển giỏi là họ tìm và sửa lỗi nhanh như thế nào. Gỡ lỗi trên thiết bị di động — việc tìm và khắc phục nguồn gốc của sự cố — đặc biệt khó khăn vì lỗi xảy ra trên thiết bị của người dùng, trong môi trường mà bạn không thể nhìn thấy. Hầu hết, tất cả những gì bạn có là nhật ký sự cố (nhật ký sự cố / dấu vết ngăn xếp - bản phân tích kỹ thuật về vị trí ứng dụng đã đến khi nó gặp sự cố). AI cực kỳ mạnh mẽ trong việc đọc những hồ sơ khó hiểu này, liệt kê các nguyên nhân có thể xảy ra và đề xuất giải pháp. Trong phần này, chúng ta sẽ tìm hiểu cách sử dụng AI như một “thám tử lỗi” nhưng giao cho bạn trách nhiệm xác minh chẩn đoán và cách khắc phục cuối cùng.
Đọc nhật ký sự cố: Nơi AI tỏa sáng nhất
Nhật ký sự cố là một văn bản dài và đáng sợ; nhà phát triển thiếu kinh nghiệm sẽ không biết tìm ở đâu. AI phân tích văn bản này trong vài giây: nó bị lỗi ở dòng nào, ngoại lệ nào được đưa ra, lý do có thể là gì. Các lỗi phổ biến trên thiết bị di động là hiển nhiên và AI nhận ra chúng nhanh chóng: NullPointerException (cố truy cập giá trị null), IndexOutOfBoundsException (truy cập phần tử danh sách không tồn tại) trên Android, EXC_BAD_ACCESS (truy cập bộ nhớ đã giải phóng) trên iOS, bất ngờ tìm thấy con số không (buộc một tùy chọn nil).
Các loại sự cố di động phổ biến nhất và nguyên nhân điển hình của chúng như sau:
Lỗi (ngoại lệ)
Nền tảng
nguyên nhân điển hình
NullPointerNgoại lệ
Android
Truy cập giá trị null
IndexOutOfBoundsNgoại lệ
Android
Truy cập phần tử danh sách không tồn tại
bất ngờ tìm thấy con số không
iOS
Buộc mở gói tùy chọn nil (!)
EXC_BAD_ACCESS
iOS
Truy cập bộ nhớ đã giải phóng
ANR/đóng băng
Android
Xử lý dài/nặng trên luồng chính
Luồng gỡ lỗi từng bước:
- Thu thập hồ sơ. Tập hợp nhật ký sự cố, thông báo lỗi và các bước để tái tạo nó nếu có thể.
- Đưa ra bối cảnh AI. Hãy cho tôi biết không chỉ lỗi mà cả đoạn mã có liên quan và lỗi xảy ra.
- Hỏi những nguyên nhân có thể xảy ra. “Hãy cho tôi biết 3 nguyên nhân có thể xảy ra nhất và cách xác minh từng nguyên nhân.”
- Xác minh. Xác nhận lý do được đề xuất trong mã và kiểm tra; Đừng sửa nó bằng cách đoán.
- Hãy sửa nó và kiểm tra lại. Kiểm tra xem lỗi đã thực sự biến mất và không có lỗi mới nào được tạo ra.
Mẹo: Khi cung cấp nhật ký sự cố cho AI, hãy bao gồm cả đoạn mã có liên quan. Chỉ với dấu vết ngăn xếp, AI mới đưa ra dự đoán chung; Khi bạn nhìn thấy mã, xác suất tìm ra dòng chính xác và nguyên nhân thực sự sẽ tăng lên rất nhiều. Bối cảnh xác định chất lượng chẩn đoán.
Bẫy dữ liệu cá nhân
Nhật ký sự cố và nhật ký thường chứa dữ liệu người dùng: email, ID người dùng, vị trí, thậm chí cả nội dung biểu mẫu. Việc dán bản ghi này vào AI là làm rò rỉ dữ liệu cá nhân cho bên thứ ba và là vi phạm KVKK/GDPR. Xóa (che giấu) khu vực cá nhân trước khi gửi bản ghi. Ngoài ra, hãy cẩn thận để không ghi dữ liệu cá nhân vào nhật ký ứng dụng của bạn ngay từ đầu; Một nhật ký tốt sẽ mô tả vấn đề nhưng không tiết lộ danh tính.
Thận trọng: Cách khắc phục do AI đề xuất có thể “làm im lặng lỗi” nhưng có thể không giải quyết được nguyên nhân gốc rễ. Ví dụ: gói NullPointerException bằng kiểm tra null sẽ dừng sự cố, nhưng nếu bạn không hiểu tại sao giá trị đó là null thì lỗi logic thực tế sẽ tiếp tục. Điều trị bệnh chứ không phải triệu chứng.
Phân tích nguyên nhân gốc rễ
Mục đích của việc sửa lỗi chuyên nghiệp không phải là tắt lỗi mà là tìm ra nguyên nhân gốc rễ. Tôi hỏi AI "tại sao cái này có thể là null, nó có thể bị lạc ở đâu trong luồng dữ liệu?" hỏi, "làm cách nào để tắt tiếng này?" Nó có giá trị hơn nhiều so với việc hỏi. Sau khi tìm ra nguyên nhân gốc rễ, hàng chục biến thể của cùng một lỗi sẽ được giải quyết cùng một lúc. AI rất giỏi trong việc suy luận chuỗi này: theo dõi dữ liệu từ đầu vào đến đầu ra và yêu cầu nó suy nghĩ xem nó bị hỏng ở đâu.
ba trường hợp nhỏ
Trường hợp 1 - 2 giờ làm việc trong 10 phút. Một nhà phát triển đã dành 2 giờ để tìm kiếm một lỗi chỉ xảy ra trên một mẫu máy Samsung cụ thể. Đưa nhật ký sự cố (xóa khu vực cá nhân) cho AI; YZ cho biết lỗi này là do tràn bộ nhớ xảy ra với độ phân giải camera khác của thiết bị đó. Với manh mối, nguyên nhân đã được tìm ra trong 10 phút. AI tăng tốc tìm kiếm, con người xác minh giải pháp.
Trường hợp 2 - Lỗi im lặng đã quay trở lại. Một nhóm đã ngăn chặn sự cố lặp lại bằng cách sử dụng đề xuất AI để thử phát hiện sự cố đó. Sự cố đã dừng lại nhưng người dùng bắt đầu phàn nàn rằng "dữ liệu không được lưu"; bởi vì vấn đề thực sự (kết nối cơ sở dữ liệu) vẫn còn đó nên nó đã trở nên vô hình. Sau khi tìm ra nguyên nhân gốc rễ, cả sự cố và mất dữ liệu đều được giải quyết. Bài học: im lặng không giải quyết được vấn đề.
Trường hợp 3 - Dữ liệu bị rò rỉ trong nhật ký. Một cuộc kiểm tra đã phát hiện ra rằng tên đầy đủ và số điện thoại của người dùng đã được ghi vào nhật ký sự cố của ứng dụng. Các nhà phát triển thường xuyên dán các nhật ký này vào AI và sửa lỗi; Vì vậy, dữ liệu cá nhân đã bị rò rỉ trong nhiều tháng. Nhật ký đã được che dấu và quy trình đã được sửa. Bài học: tính bảo mật được áp dụng ngay cả khi gỡ lỗi.
Dấu nhắc yếu / Dấu nhắc mạnh
Lời nhắc kém: "Tại sao lại xảy ra lỗi này? [dấu vết ngăn xếp]"
Lời nhắc mạnh mẽ: "Sự cố này đang xảy ra trong ứng dụng Android của tôi. Bối cảnh:- Trong khi thực hiện: người dùng thêm vào giỏ hàng từ chi tiết sản phẩm- Chỉ trên một số thiết bị, mẫu RAM thấp- Mã liên quan: [Phần ViewModel và Kho lưu trữ]- Nhật ký sự cố (dữ liệu cá nhân đã bị xóa): [dấu vết ngăn xếp]Liệt kê 3 nguyên nhân gốc có thể xảy ra nhất. Đối với từng nguyên nhân:1) Làm cách nào để xác minh, 2) Khắc phục vĩnh viễn (không tắt tiếng). Nêu giả định của bạn khi bạn không chắc chắn."
Mẫu có thể sao chép
Mẫu phân tích sự cố:"Phân tích sự cố sau. Bối cảnh: [bạn đang làm gì, thiết bị/phiên bản nào]. Mã liên quan: [mã]. Nhật ký sự cố (đã xóa dữ liệu cá nhân): [dấu vết]. Đưa ra 3 nguyên nhân gốc rễ có khả năng xảy ra nhất và xác minh + cách khắc phục vĩnh viễn cho từng nguyên nhân. Đồng thời đánh dấu các cách giải quyết giúp làm im lặng triệu chứng."
Mẫu nguyên nhân cốt lõi: "Giá trị này xuất hiện [null/false] một cách bất ngờ. Hãy theo luồng dữ liệu từ đầu vào đến thời điểm này: nó có thể bị mất hoặc bị hỏng ở đâu? Hãy cho tôi biết tôi nên kiểm tra ở đâu ở mỗi giai đoạn. [mã]"
Mẫu đọc nhật ký: "Giải thích đầu ra nhật ký này: những sự kiện nào đã xảy ra theo thứ tự, điểm bất thường ở đâu, bước lành mạnh cuối cùng trước khi xảy ra lỗi là gì? [nhật ký — đã xóa dữ liệu cá nhân]"
Mẫu tái tạo: "Tôi nên cố gắng tái tạo lỗi này bằng những bước, trạng thái thiết bị và dữ liệu nào một cách đáng tin cậy? Hãy liệt kê các điều kiện có thể gây ra lỗi theo thứ tự xác suất. [mô tả]"
Những lỗi thường gặp
- Đưa ra dấu vết ngăn xếp không có ngữ cảnh. Nếu không có mã và kịch bản liên quan, AI sẽ đưa ra dự đoán chung.
- Dán dữ liệu cá nhân vào AI cùng với nhật ký. Vi phạm bí mật; mặt nạ đầu tiên.
- Im lặng triệu chứng. Việc che giấu sự cố bằng tính năng try-catch sẽ để lại vấn đề gốc và tạo ra các vấn đề mới.
- Áp dụng đề xuất đầu tiên mà không xác minh nó. Việc chẩn đoán AI chỉ là một giả thuyết; Xác nhận bằng mã.
- Đang cố gắng tái tạo nó trong trình mô phỏng. Một số lỗi chỉ xuất hiện trên thiết bị/điều kiện thực tế.
- Không kiểm tra lại sau khi sửa. Việc sửa lỗi có thể đã làm hỏng thứ khác; Kiểm tra hồi quy.
Tóm lại
Một trong những lĩnh vực mà AI vượt trội là đọc nhật ký sự cố và phân loại các nguyên nhân có thể xảy ra; Chất lượng chẩn đoán được cải thiện rất nhiều khi bối cảnh được đưa ra. Nhưng chẩn đoán và điều chỉnh cuối cùng thuộc về con người: gợi ý của AI là một giả thuyết, được xác minh bằng mã và thử nghiệm. Mục đích không phải là làm im lặng triệu chứng mà là giải quyết nguyên nhân gốc rễ; Lỗi im lặng thường trả về ở dạng khác. Nhật ký sự cố có thể chứa dữ liệu cá nhân; Hãy che giấu nó trước khi đưa nó cho AI và không ghi dữ liệu cá nhân vào nhật ký của bạn ngay từ đầu.
Nhiệm vụ ứng dụng
Lấy nhật ký sự cố mà bạn có (hoặc mẫu bạn tạo từ AI), che giấu mọi dữ liệu cá nhân/đặc biệt trong đó và cung cấp cho AI bằng "Mẫu phân tích sự cố". Phân biệt nguyên nhân gốc rễ nào khiến danh sách AI là bản sửa lỗi thực sự và danh sách nào chỉ là im lặng. Áp dụng bản sửa lỗi vĩnh viễn mà bạn đã chọn và xác minh rằng lỗi đã biến mất và không có vấn đề mới nào phát sinh.
danh sách kiểm tra
- [ ] Tôi đã cung cấp nhật ký sự cố với mã có liên quan và bối cảnh kịch bản
- [ ] Tôi đã che giấu dữ liệu cá nhân/đặc biệt trong nhật ký
- [ ] Tôi đã hỏi AI về nguyên nhân gốc rễ và cách khắc phục vĩnh viễn, không im lặng
- [ ] Tôi đã xác minh chẩn đoán trong mã và thử nghiệm, tôi không áp dụng nó một cách mù quáng
- [ ] Sau khi sửa xong mình test thấy lỗi đã biến mất và không có hiện tượng hồi quy
- [ ] Tôi đã kiểm tra rằng ứng dụng của tôi không ghi dữ liệu cá nhân vào nhật ký của nó