一種處理vs2017異常崩潰的方法
01 vs2017 對於大工程頻繁崩潰
在除錯chromium程式碼的時候,vs2017有時會頻繁出現崩潰。
優先嚐試:
工具==>選項==>除錯==>常規
[一個程序中斷時則中斷所有程序] 的勾選去掉。
還可以嘗試如下操作:
1 嘗試刪除專案資料夾下面的.vs資料夾
2 %LocalAppData%\Microsoft\VisualStudio\15.0_xxx
3 嘗試安全模式啟動vs2017
在相關路徑下(C:\Program Files (x86)\Microsoft Visual Studio\2017\versioname\Common7\IDE )執行devenv /safemode
另外:編譯chromium 最好不要安裝windows 驅動開發的sdk。
4 不要載入太多符號檔案
工具==>選項==>除錯==>符號==>只加載指定項
02 其他嘗試
不知為何,更新了vs2017以後,又把chromium程式碼更新到 71,編譯debug/Release都正常。除錯debug版本,vs2017會自動無提示重啟。看vs2017異常日誌。提示記憶體不足。實際上是32GB的記憶體。應該不存在記憶體不足的問題。升級後,無法退回到15.7版本。也沒找到可以僅僅安裝15.7,不帶15.9的安裝方法。
嘗試了一下各種方法。都沒有解決除錯崩潰的問題。
直接換裝 15.9.2/15.9.1/15.8,除錯chromium 71.0.3538.xxx依然崩潰(執行正常)。
解除安裝重新安裝15.9.2,除錯依然崩潰。
安裝15.7.x(14.14 toolset),需要手工刪除 Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26405
依次解除安裝vs2017以安裝外掛測試,除錯chromium依然崩潰。
做如下操作也無效果
devenv /resetuserdata
devenv /resetsettings
管理員許可權:
cd D:\install\Microsoft Visual Studio\2017\Community\Common7\IDE\PublicAssemblies
gacutil -i Microsoft.VisualStudio.Shell.Interop.11.0.dll
清理vs2017的所有臨時快取,無效果
03 問題緩解
除錯chromium的x64位版本。問題得到緩解,崩潰概率稍微降低。
vs2017雖然還是32位程式,但是除錯x64的chromium,不崩潰了。
整個過程,vs2017佔用記憶體不超過4GB,chromium總記憶體除錯時,最大不到1GB。
如果除錯chromium x86版本,設定斷點後,就會頻繁崩潰。除錯chromium x64沒這個問題。
附chromium(zdx) 32位程式崩潰時記憶體使用情況圖,如下:chrome大約佔用500MB, vs2017佔用 2.9GB。處於除錯狀態後,一般就會崩潰。
應該是VS+被除錯程式的共記憶體數大約32位程式限制,就會崩潰。這個時候,vs2017崩潰,不會有提示。檢視vs2017的執行日誌(%temp%\MSBuild_pid-*),錯誤報告如下:
vs2017錯誤日誌:%temp%\MSBuild_pid-2392_bbee76ab853743a28f0b6f96d8e6378e.failure.txt
UNHANDLED EXCEPTIONS FROM PROCESS 2392:
=====================
2018-11-23 10:24:23
System.OutOfMemoryException: 沒有足夠的記憶體繼續執行程式。
在 System.Windows.Media.Composition.DUCE.Channel.BeginCommand(Byte* pbCommandData, Int32 cbSize, Int32 cbExtra)
在 System.Windows.Media.GlyphRun.CreateOnChannel(Channel channel)
在 System.Windows.Media.GlyphRun.System.Windows.Media.Composition.DUCE.IResource.AddRefOnChannel(Channel channel)
在 System.Windows.Media.RenderData.System.Windows.Media.Composition.DUCE.IResource.AddRefOnChannel(Channel channel)
在 System.Windows.UIElement.RenderContent(RenderContext ctx, Boolean isOnChannel)
在 System.Windows.Media.Visual.RenderRecursive(RenderContext ctx)
在 System.Windows.Media.Visual.UpdateChildren(RenderContext ctx, ResourceHandle handle)
在 System.Windows.Media.Visual.RenderRecursive(RenderContext ctx)
在 System.Windows.Media.Visual.UpdateChildren(RenderContext ctx, ResourceHandle handle)
在 System.Windows.Media.Visual.RenderRecursive(RenderContext ctx)
在 System.Windows.Media.Visual.UpdateChildren(RenderContext ctx, ResourceHandle handle)
在 System.Windows.Media.Visual.RenderRecursive(RenderContext ctx)
在 System.Windows.Media.Visual.UpdateChildren(RenderContext ctx, ResourceHandle handle)
在 System.Windows.Media.Visual.RenderRecursive(RenderContext ctx)
在 System.Windows.Media.Visual.UpdateChildren(RenderContext ctx, ResourceHandle handle)
在 System.Windows.Media.Visual.RenderRecursive(RenderContext ctx)
在 System.Windows.Media.Visual.Render(RenderContext ctx, UInt32 childIndex)
在 System.Windows.Media.CompositionTarget.Compile(Channel channel)
在 System.Windows.Media.CompositionTarget.System.Windows.Media.ICompositionTarget.Render(Boolean inResize, Channel channel)
在 System.Windows.Media.MediaContext.Render(ICompositionTarget resizedCompositionTarget)
在 System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
在 System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)
在 System.Windows.Media.MediaContext.Resize(ICompositionTarget resizedCompositionTarget)
在 System.Windows.Interop.HwndTarget.OnResize()
在 System.Windows.Interop.HwndTarget.HandleMessage(WindowMessage msg, IntPtr wparam, IntPtr lparam)
在 System.Windows.Interop.HwndSource.HwndTargetFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
在 MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
在 MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
在 System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
在 MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
在 MS.Win32.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
在 MS.Win32.HwndSubclass.DefWndProcWrapper(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
在 MS.Win32.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
在 MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
===================
04 停用vs2017的 ClangFormat
工具==>文字編輯器==>C/C++==>格式設定==>不勾選[啟用ClangFormat支援]
相關推薦
一種處理vs2017異常崩潰的方法
01 vs2017 對於大工程頻繁崩潰 在除錯chromium程式碼的時候,vs2017有時會頻繁出現崩潰。 優先嚐試: 工具==>選項==>除錯==>常規 [一個程序中斷時則中斷所有程序] 的勾選去掉。 還可以嘗試如下操作: 1 嘗試刪除
5種處理Vue異常的方法
原文: Handling Errors in Vue.js 譯者: Fundebug 本文采用意譯,版權歸原作者所有 去年一整
網易雲課堂_C++程序設計入門(下)_第9單元:白公曾詠牡丹芳,一種鮮妍獨“異常”_第9單元 - 作業5:OJ編程 - 使用異常進行圖形類的錯誤處理
using define 幫助 發生 半角 etc mooc sub private 第9單元 - 作業5:OJ編程 - 使用異常進行圖形類的錯誤處理 查看幫助 返回 溫馨提示: 1.本次作業屬於Online Judge題目,提交後由系統即時判分。 2.學
一種處理centos7.2 的firewalld 規則的簡易方法
tcp 默認 public AD xml文件 生成 維護 load systemctl centos7 的防火墻的規則是以xml文件方式維護的,可以通過替換配置文件方式維護防火墻規則配置文件以public.xml為例配置文件位於/etc/firewalld/zones 文件
Socket:半包及粘包的一種處理方法
先說下思路: 當出現半包情況時,原本一整段的訊息被分成兩部分或多部分,導致用來判斷訊息是否完整的函式無法判斷,所以這時候就將先到達的內容儲存起來,用於與後到達的內容連線在一起。 當出現粘包情況時,訊息A和訊息B緊密的連線在一起,這就導致處理訊息的函式如果不將訊
CMD終端關於pip報錯,scrapy報錯的一種處理方法
CMD終端關於pip報錯,scrapy報錯的一種處理方法 如果在終端輸入pip,或scrapy,報如下錯誤: Fatal error in launcher: Unable to create process using '"' 這通常是因為你的電腦裝了兩個版本的python(python2.x
關於 未處理System.StackOverflowException的一種處理方法
今天除錯前同事寫的程式,然後就報了錯:未處理System.StackOverflowException。如下圖: 這裡程式碼使用了遞迴。一開始我以為是程式出現了死迴圈,於是開始一步一步除錯。 但是此時有個奇怪的現象,當我用斷點一步一步走的時候程式就是正常的,但是當把斷點
android button背景圖片不拉伸的一種處理方法
一般來說UI給的圖片比例應該和控制元件是正好符合的,但是實際操作過程中會發現可能不符合的情況,比例不對直接設定background的話background會被拉伸,這個時候一般來說如果能像ImageView一樣設定scaleType為centerCrop或者center就好了
Segment fault的一種處理方法
最近寫程式的時候,碰到了segment fault,花了兩天時間找出瞭解決辦法。下面是我看到比較好的方法。 有的程式可以通過編譯,但在執行時會出現Segment fault(段錯誤)。這通常都是指標錯誤引起的。但這不像編譯錯誤一樣會提示到檔案一行,而是沒有任何資訊。一種辦法
Qt之自定義搜索框——QLineEdit裏增加一個Layout,還不影響正常輸入文字(好像是一種比較通吃的方法)
too 步驟 set box 文本 csdn sub void 鼠標 簡述 關於搜索框,大家都經常接觸。例如:瀏覽器搜索、Windows資源管理器搜索等。 當然,這些對於Qt實現來說毫無壓力,只要思路清晰,分分鐘搞定。 方案一:調用QLineEdit現
數據庫查詢速度慢了?是否是因為死鎖了?一種解決死鎖的方法。
-- 檢索 blog kill _id exe 進行 xxx 通過 --查詢哪些表被死鎖 select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sy
排序_快速排序_另一種取劃分點的方法
交換 ++ new 改進 break value 進行 ins man 最基本的劃分點由數組的最後一個值來確定,現在是將數組的最後一個值的前一個數值作為劃分點,但是需要經過三項取一方法的變換,最後它位置上的值是三個中最大的。 public class ArrayIns {
機器不學習:一種提升預測能力的方法-機器學習模型
範圍 和集 最重要的 機器 免費 現實 良好的 例子 永恒 機器不學習 jqbxx.com -機器學習好網站 沒有哪個機器學習模型可以常勝,如何找到當前問題的最優解是一個永恒的問題。 幸運的是,結合/融合/整合 (integration/ combinat
Kossel的一種滑塊位置計算方法
定義 運行 pos 平面 當前 並不是 post then 傳感器 做了一個小激光雕刻機之後,研究了一下這款3D打印機的結構和工作原理,一下就對這個運動過程很感興趣,這三個桿是怎麽聯動使得噴頭保持在一個平面上運動呢?打算先做一個架構,然後把激光器放在上面不是
一種生成動態口令的方法
JavaScript 動態口令 'use strict' let MD5 = require('blueimp-md5'); let UUIDv1 = require('uuid/v1'); const T = 30; let secret =
一種高效的QPS統計方法
循環數組 eset 指數 yun return hashmap await spa 全面 一、概述 對QPS的統計,通常是對一秒內各線程通過數據處理鏈中某一個切入點的次數進行累加計數。且不論采用何種方式都繞不開鎖,那如何結合QPS統計的場景,減少線程之間對鎖的競爭,是各實現
180720_一種有效的日期計數方法
2個 class 元素 年月日 ++ 多重 月份 存儲 lin 最近在學習C#,昨天老師布置了一個作業,輸入年月日,返回這一天是一年中的第幾天。 大致分析了一下,想出了一種方法,大致思路如下: 使用 switch 檢測月份得出該月長度; 根據年份決定二月長度;
一種快速卷積實現方法
本文基於論文Fast Algorithms for Convolutional Neural Networks,並且整理了相關知識點。 我們首先了解一下傅立葉變換: 對於連續型傅立葉變換的頻域核時域轉換公式: 對於離散的傅立葉變換: 關於傅立葉的理解 可以看這篇文章
【模式識別與機器學習】——3.9勢函式法:一種確定性的非線性分類方法
目的 用勢函式的概念來確定判別函式和劃分類別介面。 基本思想 假設要劃分屬於兩種類別ω1和ω2的模式樣本,這些樣本可看成是分佈在n維模式空間中的點xk。 把屬於ω1的點比擬為某種能源點,在點上,電位達到峰值。 隨著與該點距離的增大,電位分佈迅速減小,即把樣本xk附近空間x點上的電位分佈,看
一種呼叫dll的巧妙方法
直接上程式碼,後面說應用場景 新建一個專案,引入需要呼叫的dll,如下 class Program { [DllImport( "soft.dll" )] static extern int CreditTrans( StringBuilder strin,