2015-12-22 12 views
5

Tôi tìm thấy dấu vết "AKC! _invoke_watson" khi tôi sử dụng WinDbg để phân tích vấn đề của chúng tôi. Bạn có thể giúp tôi giải thích "_invoke_watson" là gì không? Và làm thế nào để biết nguyên nhân gốc rễ của ứng dụng AKC dựa trên dấu vết này là gì?_invoke_watson trong WinDbg là gì?

DEFAULT_BUCKET_ID: NULL_POINTER_READ_IN_CALL 

LAST_CONTROL_TRANSFER: from 00007ff713fe047e to 00007ff713fe03f4 

STACK_TEXT: 
00000000`0274efe0 00007ff7`13fe047e : 00000000`024a36d8 00000000`ce9f27b4 00000000`024a1ac0 00007ff7`13fe3162 : AKC!_invoke_watson+0x18 
00000000`0274f010 00007ff7`13fe0499 : 00000000`00000130 00000000`0274f190 00000000`ffffffff 00000000`0274f120 : AKC!_invalid_parameter+0x6e 
00000000`0274f050 00007ff7`13fe28a6 : 00000000`00000068 00000000`00000000 00000000`00000225 00000000`0000002a : AKC!_invalid_parameter_noinfo+0x19 
00000000`0274f090 00007ff7`13fdab91 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : AKC!_woutput_s_l+0xb42 
00000000`0274f5b0 00007ff7`13fdac52 : 00000000`024a36d8 00000000`00000409 00000000`00000000 00000000`00000000 : AKC!_vswprintf_helper+0x9d 
00000000`0274f620 00007ff7`13fdac9d : 00000000`024a34b0 00000000`00000000 00000000`00000000 00000000`00000000 : AKC!_vswprintf_s_l+0x42 
00000000`0274f660 00007ff7`13fd7885 : 00000000`0000003e 00000000`024a34b0 00000000`00000000 00000000`00000409 : AKC!vswprintf_s+0x11 
00000000`0274f6a0 00007ff7`13fd40a1 : 00000000`024a34b0 00000000`0274f730 00000000`024a3f90 00000000`024a1a70 : AKC!swprintf_s<260>+0x25 
00000000`0274f6d0 00007ff7`13fd48b6 : 00000000`00000026 00000000`024a34b0 00000000`024a34b0 00007ff7`13ff0550 : AKC!Capture::initTag+0xf1 
00000000`0274f980 00007ff7`13fd345e : 00000000`00000000 00000000`024a34b0 00000000`00000026 00000000`000000c8 : AKC!Capture::funcShow+0x56 
00000000`0274f9b0 00007ffc`21e815dd : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : AKC!Capture::Loop+0x50e 
00000000`0274fa50 00007ffc`229d43d1 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : kernel32!BaseThreadInitThunk+0xd 
00000000`0274fa80 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x1d 


FOLLOWUP_IP: 
AKC!_invoke_watson+18 [f:\dd\vctools\crt_bld\self_64_amd64\crt\src\invarg.c @ 156] 
00007ff7`13fe03f4 ff159ebe0000 call qword ptr [AKC!_imp_GetCurrentProcess (00007ff7`13fec298)] 

FAULTING_SOURCE_LINE: f:\dd\vctools\crt_bld\self_64_amd64\crt\src\invarg.c 

FAULTING_SOURCE_FILE: f:\dd\vctools\crt_bld\self_64_amd64\crt\src\invarg.c 

FAULTING_SOURCE_LINE_NUMBER: 156 

FAULTING_SOURCE_CODE: 
No source found for 'f:\dd\vctools\crt_bld\self_64_amd64\crt\src\invarg.c' 


SYMBOL_STACK_INDEX: 0 

SYMBOL_NAME: akc!_invoke_watson+18 

Trả lời

10

_invoke_watson() là chức năng thời gian chạy Microsoft C bên trong đã làm hỏng chương trình của bạn. Đó là những gì làm cho bạn nhìn vào minidump này. Không cho bạn biết bất cứ điều gì thú vị, bạn phải nhìn vào dấu vết ngăn xếp để xem nó như thế nào. Những rắc rối bắt đầu tại địa chỉ:

AKC!swprintf_s<260>+0x25 

Lưu ý _s postfix của tên hàm, nó là secure version của swprintf(). Nó đảm bảo rằng sprintf() không thể ghi qua phần cuối của bộ đệm. Nó đã làm ghi qua phần cuối của bộ đệm, đó là những gì đã kích hoạt sự cố. Bạn cũng có thể thấy kích thước bộ đệm từ tên mẫu, 260 ký tự.

Đó là số ảo trong Windows, đó là giá trị MAX_PATH. Cung cấp cho bạn một lý thuyết khá tốt lý do tại sao chương trình bị hỏng, nó có thể được yêu cầu để đối phó với một tên tập tin có chứa hơn 259 ký tự. Không phổ biến, các chương trình C và C++ nói chung có một thời gian rất khó khăn đối phó với các hệ thống tập tin trên Windows có thể tạo ra các đường dẫn với tối đa 32.767 ký tự. Backgrounder is here. Ngoài việc thêm kiểm tra vào chương trình của bạn để đảm bảo giới hạn này không vượt quá, bạn nên đưa ra chẩn đoán tốt hơn, yêu cầu khách hàng sắp xếp lại dữ liệu của mình và tránh lưu trữ tệp trong thư mục lồng nhau sâu là cách giải quyết đơn giản nhất.

+0

Cảm ơn câu trả lời của bạn. Tôi rất muốn nói cảm ơn bạn rất nhiều lần nữa. –

Các vấn đề liên quan