わいえむねっと

Contents
Categories
Calendar
2008/03
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Monthly Archives
~2000/01
Recent Entries
RSS1.0
Templates
Information
Processed: 0.018 sec
Chashed: -
2008/03/17 Mon
http://dsas.blog.​klab.org/archives/51114040.h​tml
*.pdb ファイルは実行ファイルのビルド時に毎回生成されます。たとえソースコードに変更がなくても、 実行ファイル本体のビルド時に同時に生成されたものでなければまったく役に立ちませんので、実行ファイルと同様に大切に保存しておく必要があります。

大切に保存していなかったけれどどうにかしなくてはならなくなったのでどうにかしてみるテスト。

①foobar.exeをビルドしたのと同じソースでfoo.exeとbar.exeをビルドし、foo.pdbとbar.pdbを取得。

②foo.pdbとbar.pdbを比較
-94 2E 31 01 71 D3 DD 47-01 00 00 00 CD 39 C1 D4
-85 99 E7 4E A3 37 69 4D-56 19 23 E6 00 00 00 00
+94 2E 31 01 B7 CB DD 47-01 00 00 00 3C 43 E5 68
+26 71 82 44 A6 87 E2 34-98 B2 8A AE 00 00 00 00

-32 35 2E 74 6D 70 00 00-2E 00 16 11 08 02 00 00
+31 30 2E 74 6D 70 00 00-2E 00 16 11 08 02 00 00

-6B 43 6F 6E 74 72 6F 6C-2E 6F 62 6A 00 F1 00 00
+6B 43 6F 6E 74 72 6F 6C-2E 6F 62 6A 00 FC 00 00

-74 53 6F 63 6B 65 74 2E-6F 62 6A 00 78 00 00 00
+74 53 6F 63 6B 65 74 2E-6F 62 6A 00 E8 00 00 00

-53 65 6C 65 63 74 6F 72-2E 6F 62 6A 00 50 00 00
+53 65 6C 65 63 74 6F 72-2E 6F 62 6A 00 2D 00 00

-72 53 6F 63 6B 65 74 2E-6F 62 6A 00 F0 00 00 00
+72 53 6F 63 6B 65 74 2E-6F 62 6A 00 B8 00 00 00

-6E 61 74 65 45 76 65 6E-74 2E 6F 62 6A 00 3C 00
+6E 61 74 65 45 76 65 6E-74 2E 6F 62 6A 00 9D 00

-94 2E 31 01 71 D3 DD 47-01 00 00 00 CD 39 C1 D4
-85 99 E7 4E A3 37 69 4D-56 19 23 E6 22 00 00 00
+94 2E 31 01 B7 CB DD 47-01 00 00 00 3C 43 E5 68
+26 71 82 44 A6 87 E2 34-98 B2 8A AE 22 00 00 00

③foo.exeとfoobar.exeを比較
-50 45 00 00 4C 01 04 00-71 D3 DD 47 00 00 00 00
+50 45 00 00 4C 01 04 00-9D D9 D8 47 00 00 00 00

-00 00 00 00 71 D3 DD 47-00 00 00 00 02 00 00 00
+00 00 00 00 9D D9 D8 47-00 00 00 00 02 00 00 00

-50 48 41 00 2D 00 00 00-52 53 44 53 CD 39 C1 D4
-85 99 E7 4E A3 37 69 4D-56 19 23 E6 01 00 00 00
+50 48 41 00 2D 00 00 00-52 53 44 53 57 B2 A1 08
+E2 0B 2A 4D 94 E3 DC 49-A1 56 9A 8A 01 00 00 00

④foo.pdbの赤字をfoobar.exeの青字に書き換え。

で、とりあえずデバッガをだますことに成功。

http://www.egghea​dcafe.com/software/aspnet/31171506/heap-stack-trace-question.a​spx
Debug Directories(1)
Type Size Address Pointer
cv a4 2140 d40 Format: RSDS, guid, 1, s:\repos
\trunk\rzxxx\build\sandbox\debug_test\heap_stack_trace\msvc-8.0\profile
\link-static\threading-multi\winsdk-6.1\heap_stack_trace.pdb

RSDS(52 53 44 53)の後ろの128bitはGUIDの模様。