• 締切済み

mapsファイルの作り方

/proc/PID/mapsファイルと同等のファイルを gccによるコンパイル時、もしくは生成したオブジェクト、 バイナリに対するreadelfやobjdumpを使って 作成できないものでしょうか?

みんなの回答

  • v-north
  • ベストアンサー率100% (1/1)
回答No.1

/proc/PID/mapsは、コード/データ/スタック等々プロセスが動作している動的なカレントの仮想メモリ空間ですので、readelfやobjdump等オブジェクトから取得することはできません。この仮想メモリ空間にはロード時、必要とされるDLLの領域とかファイルマップ等などでも影響されてしまいます。 なお、仮想メモリ空間はある意味予約されたメモリ領域ということで、全てに実メモリが割り当てられているわけではありません。

関連するQ&A

  • オブジェクトファイルのファイルフォーマット

    オブジェクトファイルのファイルフォーマット ELF/DWARF2形式について調べています。 C言語で作ったプログラムをコンパイルし生成されるオブジェクトファイルをバイナリエディタで開き、アセンブリ言語と比較すると、オブジェクトファイルの最初と最後にプログラムの内容(命令)と直接関係ないものが含まれていることが分かりました。 例えば、オブジェクトファイルのある場所や、コンパイルされた日時などです。(これらの情報はテキストだったので判別ができました。) インターネットで調べたところ、生成されたオブジェクトファイルがELF/DWARF2形式とうフォーマットで作られているというところまでは分かりました。 実際のオブジェクトファイルのヘッダとフッタ(命令の前後)を除いて、純粋な機械語(命令)の部分を取り出したいのですが、このELF/DWARF2形式というフォーマットでは、どうすれば、純粋な機械語の始まりと終わりを読み取ることができるでしょうか? よろしくお願いいたします。

  • obj オブジェクトファイルができる?

    VB6で、デザイン時や、コンパイル時に、 オブジェクトファイル(*.obj)が生成される事がありますか? よろしくお願いします。

  • Google Maps を組み込む

    まず質問のカテゴリはこちらでよろしいのでしょうか。 Google Maps を組み込む件についてですが、Google Maps APIでAPI Keyを取得し、GooglemapsEditorで地図データ生成ボタンを無事押したあと自分のファイルを保存する画面になるので、ファイルを保存、自分のレンタルサーバにアップロードしました。ですが開くと「GoogleマップAPIにしようされているキーは他のウェブサイトに登録されています。このウェブサイト用のキーをgoogle.com/apis/mapsにて作成、登録してください」という画面がでてしまいます。2ヶ月ほど前に自分のレンタルサーバにアップし作ったときは無事うまくいききちんとWEB上で表示されました。同じドメインで取得したからだめなんでしょうか。どなたかお願いします!

  • Google Maps を組み込む件

    まず質問のカテゴリはこちらでよろしいのでしょうか。 Google Maps を組み込む件についてですが、Google Maps APIでAPI Keyを取得し、GooglemapsEditorで地図データ生成ボタンを無事押したあと自分のファイルを保存する画面になるので、ファイルを保存、自分のレンタルサーバにアップロードしました。ですが開くと「GoogleマップAPIにしようされているキーは他のウェブサイトに登録されています。このウェブサイト用のキーをgoogle.com/apis/mapsにて作成、登録してください」という画面がでてしまいます。2ヶ月ほど前に自分のレンタルサーバにアップし作ったときは無事うまくいききちんとWEB上で表示されました。同じドメインで取得したからだめなんでしょうか。どなたかお願いします!

  • DXFファイル内OLEフレームのバイナリデータに…

    DXFファイル内OLEフレームのバイナリデータについて こちらに質問させていただいていいのか良くわかりませんが、質問させていただきます。 失礼にあたりましたらお許しください。 DXFファイルを解析して画像ファイルに落す処理を作成しています。 OLEオブジェクトとして挿入されているオブジェクトを解析しようとしているのですが、バイナリデータが入っています。 これは何のバイナリデータなのでしょうか? お分かりになる方がいらっしゃいましたら教えてください。

  • OSX gcc コアファイルってどうやって出すの?

    OSX gcc コアファイルってどうやって出すの? MacOSX(10.6.4)でバンドルのgccでコンパイルしたバイナリを実行すると Segmentation fault で落ちてしまいます。 makefileのCFLAGSに-gとか、-ggdbとか、-dHなど試してるのですが、coreファイルができません。 coreファイルはカレント、/coresなど探しました。 MacOSXで、バンドルのgccだとcoreファイルって、どうやって出すんですか?

  • ファイルをオープンしたままfork

    ファイルをオープンしたままforkした際の動作について質問です。 下のコードを書いてコンパイル、実行します。 #include <stdio.h> int main(int argc, char **argv){ FILE *fp; fp=fopen("file", "w"); fprintf(fp, "%d\n", getpid()); printf("%d\n", getpid()); fork(); } ====== $ gcc hoge.c -o hoge.out $ ./hoge.out XXX ←pid なぜかファイル内には同じpidが2つ書かれている。 $ cat file XXX XXX fork()によって生成されたプロセスが元のプロセスのファイルを参照することは予想できます。 しかしforkする前にfprintしているのになぜまたファイルに同じ内容が書き込まれるのでしょうか?

  • Linux C言語共有ライブラリを作成するときの

    RedHatLinux7.3(2.96-110)、gcc(2.96 20000731)です。 C言語で共有ライブラリを作成しています。このライブラリは呼び出し側のプログラム起動時にロードされるものなのですが、以下の2つの手順で生成されたライブラリは、どのような違いがあるのでしょうか? どちらも呼び出し側からは関数コールで実行できるのですが、どちらが正しいのでしょうか? 【その1】 1) gcc -shared -o libxxx.so xxx.c (ライブラリ生成) 2) gcc ./libxxx.so -o testcall testcall.c (呼び出し側とライブラリをリンクして実行ファイル生成) 【その2】 1) gcc -fPIC -c libxxx.c(ライブラリのオブジェクト生成) 2) gcc -fPIC -c -shared -Wl,-soname,libxxx.so.0 -o libxxx.so.0.0 xxx.o(共有ライブラリ生成) 3) soname設定 4) linkername設定 5) gcc -c -o testcall.o testcall.c(呼び出し側オブジェクト生成) 6) gcc -o testcall testcall.o -lxxx 7) LD_LIBRARY_PATH設定、exportする 以上、ご存知のかた、どうぞよろしくお願いします。

  • google maps apiについて

    現在HPをリニューアルしています。 旧サイトと新サイトは同じサーバー、同じドメインを使用しています。 旧サイトのデータはFTP内にはありません。 所在地マップに、GoogleMapを使用しています。 そこで、下記のようなエラーが出ます。 このウェブサイトには別の Google Maps API キーが必要です。新しいキーは http://code.google.com/apis/maps/signup.html で作成できます。 Google Maps API サーバーでリクエストが拒否されました。リクエスト内で指定した「sensor」パラメータには「true」または「false」のいずれかを指定する必要があります。 次に上記で指定されている http://code.google.com/apis/maps/signup.html にて、URLを指定して、APIを生成ボタンを押す 次にJavaScript Maps API の例で表示された <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true_or_false&amp;key=*********************************" type="text/javascript"></script> をエラーが表示されるページに貼り付ける ここまでの作業をおこなっております。 ただ、これで正しいのかが分かりません。 詳しい方からのご助言頂けますでしょうか?

  • CentOSでのプログラミング環境

    簡単なviで作成したプログラムをccしようとしたら、コンパイルできなかったです。 gccというライブラリが入ってなかったのでしょうか?コンパイル時、gccが画面に出ていたので、そうなのでしょうか?