問題タブ [map-files]

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.

0 投票する
1 に答える
11202 参照

c - Visual Studio で MAP ファイルを生成する方法

一般的な IDE には、メモリ全体の関数と変数の場所、およびスタックと RAM の使用状況を示す MAP ファイルを生成するオプションがあります。Visual Studio プロジェクトでは、MAP ファイルを生成してこの情報を取得できます。特に、スタックと RAM の統計情報です。

0 投票する
0 に答える
216 参照

visual-studio - マップ ファイルには、さまざまな機能の完全に同一のアドレスが含まれています

pdb-s を使用せずにリリース (最適化) ビルドでスタック トレースを取得しようとしています。現在、サンプル プログラムの実行中に StackWalk64 関数を使用して関数アドレスを取得し、リンク段階で生成されたマップ ファイルを使用して、生成されたアドレスを実際の関数名にマップしようとしています。最適化がオンになっていることに注意してください。
生成されたマップ ファイルで、2 つの異なる関数のまったく同じアドレスが表示されます。

そのようなことの理由は何でしょうか。最適化が原因でしょうか? では、この機能はどのように区別できるのでしょうか? 編集:ここに関数本体があります

ありがとう、グリゴール

0 投票する
1 に答える
459 参照

multithreading - マップ ファイル ビューで dwFileOffsetHigh と dwFileOffsetLow の値を設定する方法

私はメモリ マッピングを初めて使用します。私がやりたいことは、多くのスレッド間でマップ ファイルを共有することです。そのためには、マップ ファイルを作成し、関数を使用する必要があります。MapViewOfFileそのため、すべてのスレッドがファイルの一部にアクセスできます。もちろん、割り当ての粒度を尊重する各スレッドにビューのオフセットを送信する必要があります。しかし、私が理解していないのは、dwFileOffsetHigh & dwFileOffsetLow です。MSDN は次のように述べています。

高オフセットと低オフセットの組み合わせは、ファイル マッピング内のオフセットを指定する必要があります。

では、正しいオフセットを指定できるように、これら 2 つのパラメーターの値を設定するにはどうすればよいでしょうか。計算を行う必要がありますか、それとも単に変数を使用し、システムが残りを処理しますか (オフセットの検索) ?、私は本当にこれに行き詰まっており、試行するたびに例外が発生します。各ビューのオフセットとサイズを知っていると仮定すると、これらのパラメーターの値をどのように知ることができるでしょうか? 例は千の説明に値します。そして、ここに私がやろうとしていることの説明があります:

回答ありがとうございます。

0 投票する
0 に答える
406 参照

c++ - デバッガーによって提供されたアドレスを、マップ ファイル内のアドレスで解決します。

いくつかのライブラリ参照を持つ MFC アプリケーションがあり、リリース モードでクラッシュします。目に見える唯一のものは、クラッシュが発生した場所のアドレスです。このアドレスは、マップ ファイル内の 2 つのアドレス範囲の間に収まる必要があると理解していますが、ここでコードがクラッシュしました。

.map ファイルを見ると、近い住所すらないようです。Visual Studio が表示する逆アセンブル アドレスに値を加算または減算することによって、アドレスを解決する方法を示した何年も前に書かれた記事を読みました。記事がどこにあったか覚えていませんが、いずれにせよ住所が一致しないか、近くにさえありませんでした。

コードが壊れているビジュアルスタジオのアドレスを指定して、マップファイルを見て、コードが失敗した場所を特定する方法を知っている人はいますか?

0 投票する
0 に答える
42 参照

c - バイナリとマップ ファイルの不一致

-Map=mapfileGNU リンカのオプションで生成されたマップ ファイルを調べているときに、奇妙なことに気付きました。セクションに属するものとしていくつかのシンボルがリストされていました.textが、バイナリのシンボルテーブルにはそれらが.rodataセクションの一部としてリストされていました。コンパイラはおそらくこれらのシンボルが読み取られるだけであると判断したため、これはある種の生意気な最適化であると思われますが、マップファイルがそれを反映していないことに驚いています。私の理解では、リンクはコンパイル プロセスのほぼ最終段階であり、すべての最適化はその前に行われます。あれは正しいですか?これらのシンボルが後で最適化されたのはなぜですか?

ご想像のとおり、ツールチェーンは GCC です。ソースコードはCで書かれています。

0 投票する
0 に答える
154 参照

android - NDK - 静的ライブラリ リンカ参照のデバッグ

NDK プロジェクトで「未定義の参照」リンカー エラーが発生し始めています。これらが通常何であるかを理解しています。つまり、.h ファイルで宣言されている .cpp ファイルにないメソッドです。

2 つの静的ライブラリ 'libTTComponents.a' と 'libTTDialogs.a' にリンクするメインの共有ライブラリがあります。静的ライブラリ 'libTTDialogs.a' は、'libTTComponents.a' で定義された C++ クラスを使用します。これは、最近変更を加えるまで機能していました。残念ながら、このプロジェクトはクロスプラットフォーム プロジェクトであり、最後に Android で作業して以来、Windows で多くの変更を行ってきました。すべての変更を段階的に行うには、非常に時間がかかります。

すべての外部参照を含むリスト ファイルを生成するスタティック ライブラリをビルドするときに有効にできるリンカー/コンパイラ スイッチはありますか?

静的ライブラリをメインの共有ライブラリにリンクしようとするときに、静的ライブラリに実際にあるものをマップ ファイルに対して相互参照できるようにしたいと考えています。これにより、リンカが特定の参照が欠落していると考える理由を特定できます。

静的ライブラリとメイン モジュールの両方の Android.mk ファイルが変更されていないため、現在完全に途方に暮れています。

更新:「nm」を使用して .a ファイル内のシンボルを表示できることがわかりました。

これにより、次の行が表示されます(特に):

CSampleEdit クラスのメソッドを含むファイル SampleEdit.cpp があります。特に、リンカーが見つけられない CSampleEdit::Draw() メソッドに注目しています。

静的ライブラリ .a ファイル内にあるシンボルを確認できることがわかったので、他の静的ライブラリまたはモジュールがアクセスしようとしているものを特定する方法はありますか? 上記のエラーは、他のライブラリ libTTDialogs.a が libTTComponents.a ライブラリ内にある CSampleEdit::Draw() を見つけられないことを示しています。

私も発見しました:

これにより、次のようなエラーが大量に発生します。

.a ファイルが .o ファイルとは別の場所にあります。これが「ar」がこれらのエラーを表示する理由なのか、それとも .o ファイルを libTTComponents と同じフォルダに置く必要があるのか​​ わかりません。を。別のライブラリをコンパイルしてリンクするには、libTTComponents.a (および私の .h ファイル) だけで十分だと思っていたでしょう。

興味深いことに、すべての libTTComponents.a ソース ファイルをメイン モジュールの Android.mk に追加すると、エラーなしでリンクされます。

libTTDialogs がビルドされたときに、libTTComponents 自体がビルドされたときに作成されたシンボルと比較して、libTTComponents クラスに対して異なるシンボルが作成されたのではないかと考え始めています。

0 投票する
1 に答える
261 参照

openlayers-3 - mapserver にフィルターを無視するように指示するには?

アプリケーションの起動時に使用したくないフィルターがあり、特定のアクションに対してのみ使用します。これについてすでに質問があることは知っていますが、役に立ちません。実際には両方の答えを理解していません。

呼び出されていない場合、フィルターだけでなく、すべてのデータセットを取得するために、「列 = 値または 1 = 1」のロジックを使用していました。

ここに私が書いたものがあります:

Openlayers 3でパラメーターを使用してレイヤーを呼び出します

url: 'http://localhost:5000/cgi-bin/mapserv.exe?map=/ms4w/apps/tutorial/htdocs/essai.map&SERVICE=WMS&VERSION=1.1.1%20&REQUEST=GetCapabilities', serverType: 'mapserver', params: {'LAYERS': 'aisdata', 'ct':'myvalue', 'TILED': true} });

しかし、すべてのデータセットが返されます。(マップファイルで削除する'%ct%' = '%ct%'と、フィルターが適切に適用されます)

私の状態を無視するのを手伝ってくれる人はいますか?

0 投票する
2 に答える
1326 参照

delphi - コンパイル時にプロジェクトのリソースとして .map ファイルを追加する方法はありますか?

マップ ファイルをリソースとして追加し、システムを実行するたびにファイルを抽出して、マップ ファイルが常に正しいことを確認し、サポートの寿命を延ばしたいと考えています。Delphi 7 では、マップ ファイルをリソースとしてプロジェクトをコンパイルできますが、例外が発生したときにコール スタックが間違っているため、マップが正しくありません。Delphi シアトルでは、マップを生成する前にリソースを追加しようとするため、コンパイルさえできません。コンパイル後のタスクにファイルを追加できることはわかっていますが、コンパイル/ビルド時にそれを行う方法はありますか? あまり具体的でない場合は申し訳ありませんが、これが私の最初の質問です。ありがとう。

アップデート

いくつかの回答を読んだ後、いくつかの調査を行いました。プロジェクトですでに JEDI 例外ユニットを使用していましたが、JEDI Debug エキスパートを知りませんでした。それは私が望むことを正確に行います。JEDI デバッグ エキスパートは、.map ファイルを .jdbg ファイルに変換します。これはマップの暗号化されたファイルです (マップは単なるテキスト ファイルです)。また、jdbg ファイルはマップよりも約12% 小さくなっています。jdbg をバイナリ (exe) に挿入するオプションもあります。そのために、次のオプションを有効にしました。

  • プロジェクト -> JCL デバッグ エキスパート -> .jdbg ファイルの生成 -> このプロジェクトで有効

  • プロジェクト -> JCL デバッグ エキスパート -> jdbg データをバイナリに挿入 -> このプロジェクトで有効

  • プロジェクト -> JCL デバッグ エキスパート -> 変換後にマップ ファイルを削除 -> このプロジェクトに対して有効 (ファイルを削除する場合はもちろん)

このツールを IDE の外部で、たとえば Jenkins で使用するには、JEDI\jcl\examples\windows\debug\tools\MakeJclDbg.dprで利用可能なプロジェクトをビルドする必要がありました。ビルド後、jcl の bin ディレクトリに exe ファイルが生成されます。使い方:

MakeJclDbg -J -E -M map_filename

J - .JDBG ファイルを作成する

E - デバッグ データを実行可能ファイルに挿入する

M - 変換後に MAP ファイルを削除

実行可能ファイルは、MAP ファイルと同じディレクトリにある必要があります。これにより、jdbg ファイル (マップ ファイルに基づく) が作成され、exe に挿入され、マップが削除されます。これ (および JEDI の例外ユニット) を使用すると、例外が発生したときに、スタック トレース、システムで使用されるすべての dll のバージョン、オペレーティング システム情報などを利用でき、これらすべてをEメール。

Embarcadero にも bpl の jdbg ファイルがあることに気付きました。JCL ツールも使用していると思います。