- VisualStudio2022
- pprof-Hướng dẫn sử dụng nó trong bản mạng trực tiếp
- Triển khai C# các loại hộp chọn nhiều màu lựa chọn thả xuống, cây lựa chọn nhiều màu lựa chọn thả xuống và các nút tối đa
- [Ghi chú học tập] Cơ sở dữ liệu cấu trúc: cat tree
Tháng trước về cộng đồng có tương đối ít bài viết. có rất nhiều việc vặt trong thời gian được quyết định nên mình có rất nhiều lĩnh vực cần chia sẻ. trong khoảng thời gian này nên mình sẽ chia sẻ từng cái một với các bạn. Sửa lỗi nâng cấp .NET phiên bản mới sau năm mới, vì vậy hãy bắt kịp thời gian và sản phẩm như điên!
Đây là vụ sản xuất nạn nhân được đưa ra cho một người được bạn huấn luyện viên huấn luyện ở trại huấn luyện, những người bạn không nên phân tích nhờ tôi xem xét giúp đỡ, kinh nghiệm sửa xe của tôi cũng tương đối phong phú, có thể coi là như vậy là chắc chắn. Chắc chắn đằng sau họ, không có gì nhiều để nói, hãy nói chuyện trên windbg.
Vì Windbg tự động định vị luồng bị lỗi theo mặc định và tâm điểm của cố gắng xuất ra là cảnh bối cảnh trước sự cố của nó, lệnh .ecxr và k được sử dụng ở đây.
0:000> .ecxr eax=00000000 ebx=4d6d8360 ecx=00000003 edx=00000000 esi=4d6f0ca0 edi=4d6f0c74 eip=71a567c7 esp=026fd834 ebp=026fd83c iopl=0 nv up di pl nz na po nc cs=0000 ss=0000 ds=0000 es=0000 fs=0000 gs=0000 efl=00000000 System_Windows_Forms_ni!System.Windows.Forms.ImageList.ImageCollection.SetKeyName+0x1b: 71a567c7 cc int 3 0:000>k *** 0c2c4e7e System_Windows_Forms_ni!System.Windows.Forms.ImageList.ImageCollection.SetKeyName+0x1b 01 026fe474 0c2c063b xxx!xxx.MainForm.InitializeComponent+0x198e 02 026fe488 095cb9de xxx!xxx.MainForm..ctor+0x5fb 03 026fe4e4 0da5bc7a xxx!xxx.LoginForm.button_OK_Click+0x52e 04 026fe4f8 71a38bdf xxx!xxx.LoginForm.LoginForm_Load+0x9a 05 026fe528 710b325a System_Windows_Forms_ni!System.Windows.Forms.Form.OnLoad+0x2f ...
System.Windows.Forms.ImageList.ImageCollection.SetKeyName System.Windows.Forms.ImageList.ImageCollection.SetKeyName. SDK phiên bản của Microsoft. cụ cố định.
0:000> !t ThreadCount: 26 UnstartedThread: 0 BackgroundThread: 12 PendingThread: 0 DeadThread: 13 Hosted Runtime: no Lock ID OSID ThreadOBJ State GC Mode GC Alloc Context Domain Count Apt Exception 0 1 534 0299e700 a6028 Ưu tiên 4D6F0EFC:00000000 02997bd0 0 STA System.IndexOutOfRangeException 4d6f0ca0 2 2 5b4 029af278 2b228 00000000:00000000 02997bd0 0 MTA (Hoàn thiện) 3 6 ff0 02a60eb0 102a228 Ưu tiên 00000000:00000000 02997bd0 0 MTA (Threadpool Worker) ... 0:000> !pe Đối tượng ngoại lệ: 4d6f0ca0 Loại ngoại lệ: System.IndexOutOfRangeException Thông báo: Chỉ mục nằm ngoài giới hạn của mảng InnerException: StackTrace (có thể tạo): Chức năng IP SP 026FD834 71A567C7 System_Windows_Forms_ni!System.Windows.Forms.ImageList+ImageCollection.SetKeyName(Int32, System.String)+0x33e157 StackTraceString: Kết quả: 80131508
Nó rất lạ so với thẻ. cơ sở lỗi? cấp độ lỗi như vậy .
Để tìm câu trả lời, bạn có thể tìm cơ sở mã nguồn dựa trên các chức năng trên phân luồng và tìm câu trả lời từ mã nguồn được cắt giảm như sau:
void riêng tư Khởi tạoComponent() { this.imageList_btnbg.ImageStream = (System.Windows.Forms.ImageListStreamer)resources.GetObject("imageList_btnbg.ImageStream" this.imageList_btnbg.TransparentColor = System.draw.Color.Transparent cái này. imageList_btnbg Images.SetKeyName(0, "normal-main.bmp"); this.imageList_btnbg.Images.SetKeyName(1, "focus-main.bmp"); this.imageList_btnbg.Images.SetKeyName(2, "select-main. bmp"); .Images.SetKeyName(3, "gray-main.bmp"); this.imageList_btnbg.Images.SetKeyName(4, "down_1.png"); this.imageList_btnbg.Images.SetKeyName(5, "down_2.png"); this.imageList_btnbg.Images.SetKeyName(6, "down_3.png") ; this.imageList_btnbg.Images.SetKeyName(7, "up_1.png"); this.imageList_btnbg.Images.SetKeyName(8, "up_2.png"); this.imageList_btnbg.Images.SetKeyName(9, "up_3.png" } public void SetKeyName(int mục chỉ, tên chuỗi ) { if (!IsValidIndex(index)) { Ném IndexOutOfRangeException new() } if (imageInfoCollection[index] == null) { imageInfoCollection[index] = new ImageInfo(); } ((ImageInfo)imageInfoCollection[index]).Name = name } public bool IsValidIndex(int index) { if (index > = 0 ) { trả chỉ mục < Đếm } trả về sai; } public int Count { get { if (owner.HandleCreated) { return SafeNativeMethods.ImageList_GetImageCount(new HandleRef(owner, owner.Handle) } int num = 0; ) { if (bản gốc != null) { num += original.nImages; ; } } [Có thể duyệt (sai)] [EditorBrowsable(EditorBrowsableState.Advanced)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [SRDescription("ImageListHandleCreatedDescr")] public bool HandleCreated => localImageList != null;
Đọc kỹ năng mã hóa logic trong que, có vẻ như ngoại lệ IndexOutOfRangeException thủ công là do IsValidIndex()=false và IsValidIndex()=false là điều kiện của chỉ mục < ImageList_GetImageCount hoặc owner.origins.
Chúng tôi đã phân tích rõ ràng mã hóa logic. Khởi chạyComponent().
0:000> !clrstack OS Thread Id: 0x534 (0) Child SP Call Site 026fd784 771316bc [HelperMethodFrame: 026fd784] 026fd834 71a567c7 System.Windows.Forms.ImageList+ImageCollection.SetKeyName(Int32, System.String) 026fd848 0c2c4e7e xxx.MainForm.InitializeComponent() 026fe47c 0c2c063b xxx.MainForm..ctor() 026fe490 095cb9de xxx.LoginForm.button_OK_Click(System.Object, System.EventArgs) ... 0:000> !U /d 0c2c4e7e Mã được tạo JIT bình thường xxx.MainForm.InitializeComponent() Bắt đầu 0c2c34f0, kích thước 5ded ... 0c2c4e62 e8d9b5d864 gọi System_Windows_Forms_ni+0x160440 (71050440) (System.Windows.Forms.ImageList.get_Images(), mdToken: 06002599) 0c2c4e67 898514f5ffff mov dword ptr [ebp-0AECh],eax 0c2c4e6d ff35f0a07f05 đẩy dword ptr ds:[57FA0F0h] ("normal-main.bmp") 0c2c4e73 8bc8 mov ecx,eax 0c2c4e75 33d2 xor edx,edx 0c2c4e77 3909 cmp dword ptr [ecx],ecx 0c2c4e79 e8f2374565 gọi System_Windows_Forms_ni!System.Windows.Forms.ImageList.ImageCollection.SetKeyName (71718670) >>> 0c2c4e7e 8b8e74020000 mov ecx,dword ptr [esi+274h] ...
Đánh giá từ quẻ, Nima. . . Khi SetKeyName(0, "normal-main.bmp"); đầu tiên được thực thi, một ngoại lệ xảy ra. Điều này có nghĩa là Count=0. Tiếp theo, hãy tìm bộ sưu tập ImageCollection nguồn dữ liệu. Bạn có thể tìm thấy nó từ ngăn xếp luồng và sử dụng lệnh !dso.
0:000> !dso OS Thread Id: 0x534 (0) ESP/REG Tên đối tượng 026FD774 4d6f0c74 System.Windows.Forms.ImageList+ImageCollection 026FD778 4d6f0ca0 System.IndexOutOfRangeException ... 0:000> !do 4d6f0c74 Tên: System.Windows.Forms.ImageList+ImageCollection MethodTable: 71120ff0 EEClass: 70f230ec Kích thước: 20(0x14) byte Tệp: C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll Các trường: Loại bù trừ trường MT Tên giá trị Attr 7111ecc0 4003916 4 ... Ví dụ s.Forms.ImageList 0 Chủ sở hữu 4d6d97b0 72d909dc 4003917 8 ...ections.ArrayList 0 phiên bản 4d6f0c88 imageInfoCollection 72d8df5c 4003918 c System.Int32 1 phiên bản -1 LastAccessedIndex 0:000> !DumpObj /d 4d6d97b0 Tên: System.Windows.Forms.ImageList ... Các trường: MT Loại bù trừ trường VT Attr Giá trị Tên 71121b0c 4001013 10 ...t+NativeImageList 0 phiên bản 4d6f0c40 NativeImageList 728e15a0 4001019 1c ...Collections.IList 0 phiên bản 00000000 bản gốc
Theo bản gốcImageList và các bản gốc trong quẻ và kết hợp với mã nguồn, nó phải là thủ phạm mà phương thức SafeNativeMethods.ImageList_GetImageCount trả về 0. Đầu tiên, hãy quan sát chữ ký của nó.
[DllImport("comctl32.dll")] public static extern int ImageList_GetImageCount(HandleRef hel);
Đánh giá từ chữ ký, đây là một phương thức bên ngoài được viết bằng C++, rất khó hiểu. . . Tôi không thể sử dụng ida để tìm ra logic ở đây. . . Có vẻ như chúng ta sắp tông vào bức tường phía nam ở đây. . . Có chút hoảng loạn.
Sau một hồi suy nghĩ, tôi chợt nảy ra một ý tưởng. Đây không phải là địa chỉ bộ nhớ 32 bit sao? Điều đó xảy ra là ImageList_GetImageCount là một điều khiển giao diện người dùng về hình ảnh và sử dụng các tài nguyên COM cơ bản. Có thực sự là do không đủ dung lượng không? Sau khi bạn có ý tưởng này, hãy nhanh tay lên! Địa chỉ -tóm tắt quan sát bộ nhớ đã cam kết.
0:000> !address -summary ... --- Tóm tắt trạng thái ---------------- RgnCount ----------- Tổng kích thước ---- ---- %ofBusy %ofTotal MEM_COMMIT 1933 6e768000 ( 1,726 GB) 93,52% 86,30% MEM_FREE 631 9e01000 ( 158,004 MB) 7,72% MEM_RESERVE 607 7a87000 ( 122,527 MB) 6,48% 5,98% ...
Chết tiệt. . . MEM_COMMIT=1.72G và %ofBusy= 93.52% trong quẻ đã vượt quá giá trị tới hạn là 1.2G và sự thật cuối cùng cũng được tiết lộ. . .
Giải pháp tương đối đơn giản. Kích hoạt địa chỉ lớn và để chương trình tiêu tốn 4G bộ nhớ. Sau đó, bạn bè đã báo cáo rằng sự cố này không còn xảy ra nữa. . .
Sau khi phân tích bãi rác này, tôi thực sự cảm thấy khá xúc động. Cuộc đời giống như một bãi rác, không ngừng đan xen giữa sự thật và ảo ảnh. Có người bước ra, có người ở lại trong đó mãi mãi. . .
Cuối cùng, bài viết này về phân tích sự cố hệ thống của máy kiểm tra mồ hôi .NET kết thúc tại đây. Nếu bạn muốn biết thêm về phân tích sự cố hệ thống của máy kiểm tra mồ hôi .NET, vui lòng tìm kiếm bài viết CFSDN hoặc duyệt qua các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .
Tôi đã được cung cấp một số ví dụ về mã nguồn và tôi muốn thử nghiệm một số chức năng. Thật không may, tôi gặp sự cố khi thực thi chương trình: 11:41:31 [linqus@ottsrvafq1 example]$ javac -g test/test.jav
Tôi muốn kiểm tra xem hai ô được tạo bởi ggplot có giống nhau hay không. Một tùy chọn là sử dụng all.equal trên đối tượng vẽ, nhưng tôi muốn thực hiện một bài kiểm tra khó hơn để đảm bảo chúng giống hệt nhau, đó là điều có vẻ như Same() đang làm đối với tôi. Nhưng khi tôi kiểm tra bằng cách sử dụng cùng một d
Tôi sử dụng JUnit5 để thực hiện các bài kiểm tra Maven của mình trong đó tất cả các lớp kiểm tra đều có chú thích @ExtendWith({ProcessExtension.class}). Nếu đúng như vậy thì tiện ích mở rộng này phải thực hiện kiểm thử dựa trên logic đặc biệt
Quá trình của bạn trước khi bắt đầu phát triển thứ gì đó hữu ích với Node.js là gì? Bạn đang tạo bài kiểm tra trên VowJS, Expresso? Bạn có sử dụng Selenium để thử nghiệm không? khi? Tôi quan tâm đến việc có được một quy trình làm việc tốt để phát triển
Câu hỏi này đã có câu trả lời: NullPointerException là gì và làm cách nào để khắc phục nó? (12 câu trả lời) Đã đóng 3 năm trước. Dựa trên ví dụ ở đây, tôi đã cố gắng tạo một
Tôi đang nghĩ đến việc thử nghiệm một số thành phần Vue.js như một phần của ứng dụng Laravel. Vì vậy, tôi có một thành phần được sử dụng trong mẫu Blade và tạo GET. Yêu cầu móc vòng đời (Hook) trong quá trình gắn kết. Giả mạo
Hãy xem xét chương trình sau: #include struct Test { int a; int main() { Test t=Test();
Vị trí hiện tại của tôi là: Nếu tôi kiểm tra kỹ ứng dụng ASP.NET của mình bằng cách sử dụng kiểm tra web (trong trường hợp của tôi có thể thông qua công cụ kiểm tra VS.NET'08 và WatiN) cùng với phạm vi mã và dữ liệu mở rộng, tôi sẽ không cần phải viết riêng biệt
Tôi đang sử dụng C#, .NET 4.7 Tôi có 3 chuỗi tức là. [test.1, test.10, test.2] Tôi cần sắp xếp chúng để có được: test.1 test.2 test.10 Tôi có thể nhận được
Tôi có RecyclerView có ID "rv_list". Khi bạn nhấp vào bất kỳ mục RecyclerView nào, sẽ có một Chế độ xem có id "ngôi sao" hiển thị trong mỗi mục. Tôi muốn sử dụng expresso
Tôi đang thử nghiệm các chức năng của Firebase bằng Jest và trình mô phỏng, mặc dù các thử nghiệm này có thể đến từ các điều kiện chạy đua. Nói một cách dễ hiểu, ý tôi là đôi khi chúng đạt và đôi khi không, thậm chí trên cùng một máy. Các bài kiểm tra và chức năng được gõ
Tôi đang thử nghiệm của tôi với typeahead.js (https://github.com/angular-ui/bootstrap/blob/master/src/typeahead/typeahead.js
Tôi đang cố gắng sử dụng Teamcity để tự động chạy thử nghiệm, nhưng có vẻ như khi tác nhân biên dịch dự án, nó không được thực hiện chính xác vì khi tôi chạy lệnh như chạy thử nghiệm, tôi gặp lỗi sau: lỗi nghiêm trọng: 'Pushwoosh/PushNo
Đây là lần đầu tiên tôi chơi với dưa chuột và tạo một bộ thử nghiệm và API. Câu hỏi của tôi là tôi có cần chạy nó khi kiểm tra API không? Ví dụ: tôi có ý tưởng này, hãy khởi động máy chủ tốc hành làm tác vụ nền và sau đó khi nó khởi động (tôi
Tôi có dự án ứng dụng chính và sau đó là dự án thứ hai cho các thử nghiệm của mình. Có nên lưu trữ tất cả các loại thử nghiệm trong dự án thử nghiệm này hay một số thử nghiệm nên nằm trong dự án ứng dụng chính? Tôi có nên giữ POJO JUnit trong dự án chính của mình không (thử nghiệm
Tôi đang cố gắng tìm ra cách triển khai số lượng này. Mô hình là người dùng, bài kiểm tra, cấp độ người dùng has_many bài kiểm tra, bài kiểm tra has_many điểm. Mỗi cấp độ có một số điểm được tính toán (strong_pass, pass, failed, stron
Tôi đang thử kiểm tra một số mã tải xuống liên quan đến OkHttp3, nhưng tiếc là nó không thành công. Mục tiêu: Kiểm tra việc tải xuống tệp hình ảnh và xác minh rằng nó hoạt động. Nền tảng: Android. Mã này hoạt động trong quá trình sản xuất nhưng không có ích gì khi kiểm tra mã. Mã sản phẩm lớp Fil
Khi tôi muốn chạy thử nghiệm giao diện người dùng cho iOS, tôi nhận được thông báo sau: SetUp : System.Exception : Không thể xác định phiên bản trình mô phỏng cho X heap
Tôi đang sử dụng Cấu hình từ xa Firebase để thiết lập thử nghiệm A/B trên iOS. Mọi thứ đã được thiết lập và tôi đang đọc các giá trị mặc định phía máy chủ trong ứng dụng iOS của mình. Nhưng thử trên nhiều trình giả lập thì đều đọc mặc định
[Đã chỉnh sửa]: Tôi đã thay đổi mã của mình bằng lời hứa. Tôi đang viết React bằng công cụ khởi động này do facebook tạo và tôi là người mới thử nghiệm. Bây giờ tôi có một thành phần về hình ảnh có
Tôi là một lập trình viên xuất sắc, rất xuất sắc!