問題タブ [gflags]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - ヒープの破損 (ページ ヒープ以外) をキャッチするための GFlags 設定?
ある実稼働サイトで、アプリケーション(*)が繰り返しクラッシュしますが、再現性はありません。クラッシュ ダンプを分析すると、ヒープの破損であることが明確に示されます。クラッシュは別の場所にありますが、常にkernel32!HeapFree/内の違反にアクセスしますntdll!RtlpLowFragHeapFree。Win Dbg!analyze -vは、ヒープの破損も報告します。
これまで試したことは、アプリケーションをGFlagsオプションのPage Heapで実行することです。問題は、ページ ヒープのメモリ オーバーヘッドにより、アプリケーションが動作しなくなることです (32 ビット プロセスの仮想メモリ制限に達します)。
したがって、Page Heap は使用できません。他にどのフラグを追加すると便利でしょうか。
- 破損サイトでクラッシュする
- または、少なくとも、クラッシュしたときに最終的に生成されるクラッシュ ダンプからより多くの情報を取得できます
HeapFreeか?
現在、次のフラグを試しています。
次回のクラッシュ ダンプに何が問題なのかについての詳細情報が含まれることを期待しています。
これらのフラグを検討しましたが、今のところ省略しました。
- ヒープ パラメータ チェックを有効にします... ヒープ関数が呼び出されるたびにシステムがチェックする場合、かなりのオーバーヘッドが予想されます
- ヒープフリーチェックを有効にします...これが実際に何かを買うかどうかはわかりません
- 呼び出し時にヒープ検証を有効にします...ここでもドキュメントで高いオーバーヘッドが警告されます
私が (また) 抱えている問題の 1 つは、メモリ破損が発生したときにこれらのフラグがどのように役立つかがわからないことです。ガード ページに何かが書き込まれると、明らかにページ ヒープがアクセス違反を生成しますが、他のフラグはどのように機能するのでしょうか。
これらの他のフラグを有効にするには、Application Verifier を使用してアプリを実行する必要がありますか? または、チェック コードが何かを検出したときに例外が発生しますか?
これらのフラグのどの組み合わせが最も理にかなっており、本番環境でアプリケーションが適切なパフォーマンスとメモリ消費で実行できるようになりますか?
(*) : 産業オートメーション向けの 32 ビット Windows デスクトップ アプリケーションです。この場合、Win7 64 ビットで実行されます (他の多くのサイトでは問題なく実行されます)。
debugging - ページ ヒープは有用なスタック情報を記録しませんか?
通常のページ ヒープ (いっぱいではない) を使用して (分離されたテスト アプリで) クラッシュ シナリオをテストしようとしています。
フラグを設定しました
そして、整数バッファを1つの要素で上書きしています
実際、ブロックがベクトル d'tor で解放されると、休憩が取れます。ブレークのコールスタックは正しく報告されます:
ただし、障害のある割り当てを見ると、次のようになります。
つまり、割り当てスタック トレースがありますが、明らかにまったく役に立たないところで止まりますRtlAllocateHeap。
メモリ内のスタック トレースを見ると、次のようになります。
実際にはそれ以上の記録はないようです。
有用なスタック トレースを記録するようにページ ヒープを修正するにはどうすればよいですか?
Test プロジェクトはFPO (/Oy) でコンパイルされていないRtlAllocateHeapことに注意してください。FPO の影響を受けるとは予想していませんでした。
更新:手動で割り当てにステップインして、問題の呼び出しの FPO 性を確認しました (以下を参照) 。VC80(VS2005) ランタイム ライブラリmallocと同様に、何らかの形式の FPO が有効になっているように見えます。op newおそらく、ページ ヒープのスタック DB のスタック トレースが台無しになっている可能性があります。
python - Python webapp (Google App Engine) で gflags をインポートするには?
Google App Engine Web アプリケーションで Google Calendar API を使用したいと考えています。ここ ( https://developers.google.com/google-apps/calendar/instantiate )の指示に従ってアプリを構成しましたが、gflags をインポートする必要がありました。ここで gflags をダウンロードし ( https://code.google.com/p/python-gflags/downloads/list )、webapp の main.py と同じディレクトリに解凍しました。次に、コマンド ラインで「Python setup.py install」を実行して gflags をセットアップします。セットアップは成功し、次のように表示されました。
インストールされた c:\python27\lib\site-packages\python_gflags-2.0-py2.7.egg
python-gflags==2.0 の依存関係の処理
python-gflags==2 の依存関係の処理が完了しました。
しかし、この行はまだ機能しません:
ログに次のエラーが表示されます。
NotImplementedError: tools.run() を使用するには、gflags ライブラリをインストールする必要があります。gflags をインストールするか、できれば tools.run_flow() の使用に切り替えてください
しかし、私はすでにgflagsをインストールしていると思いましたか? また、setup.py が c:\python27\lib フォルダーに Python の卵を作成した理由についても混乱しています。これは、Google App Engine がそれにアクセスできないということですか?
windows-8 - Microsoft は GFlags と UMDH を非推奨にしましたか?
Windows Vista では UMDH が非常に役立つことがわかりましたが、Windows 7/8 では見つかりません。Microsoft は GFlags と UMDH を廃止しましたか? もしそうなら、Windows 7/8 承認ツールでコール スタックによってヒープの割り当てのログを取得する方法はありますか?
cmake - cmake: 別のプロジェクトで生成されたヘッダーを含める方法
gflagsには cmake-migration ブランチがあり、
でヘッダーを生成します。生成されたヘッダーを含めるに${buildir}/includeは
どうすればよいですか? 好き
なものはありますか?ありがとう!vargflags_generated_headers
compilation - Glog のコンパイル時のエラー
'./configure' を実行した後に 'make' を実行して glog をコンパイルすると問題が発生し、エラーが発生しました。
アーキテクチャ x86_64 の未定義シンボル: "testing::internal::StrStreamToString(std::__1::basic_stringstream, std::__1::allocator > )"、次から参照: testing::internal::String testing::internal:: logging_unittest-logging_unittest.o の StreamableToString(void const const&) testing::internal::String testing::internal::StreamableToString(int const&) logging_unittest-logging_unittest.o ld の ld: アーキテクチャ x86_64 のシンボルが見つかりませんでした: エラー: リンカー コマンドが終了コード 1 で失敗しました (呼び出しを確認するには -v を使用してください) make: * [logging_unittest] エラー 1
Mac OS X で glog-0.3.3 を使用しています。glog のコンパイル中にテストを無効にするにはどうすればよいですか?
別のコンテキストでは、Macport を使用して glog と gflags をインストールし、小さなプログラムを実行しました。エラーが生成されます:「エラー: 不明なコマンド ライン フラグ 'logtostderr'」
それがgflagsへのリンクの問題だと思います。では、どうすれば修正できますか。ありがとう