差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
|
appendix:garbagecollectorを止める方法 [2022/03/03 13:04] fumble |
appendix:garbagecollectorを止める方法 [2022/03/07 09:58] (現在) fumble |
||
|---|---|---|---|
| 行 6: | 行 6: | ||
| extern void mono_gc_disable (void) MONO_INTERNAL; | extern void mono_gc_disable (void) MONO_INTERNAL; | ||
| </ | </ | ||
| - | があるじゃろ、あとはわかるな?\\ | + | というあやしげな宣言があるじゃろ、あとはわかるな?\\ |
| MONO_INTERNALが邪魔で見えない?心の目で見るんだ!\\ | MONO_INTERNALが邪魔で見えない?心の目で見るんだ!\\ | ||
| + | 心の目をもってしても見えないじゃと?!\\ | ||
| + | <code cpp> | ||
| + | typedef __int64 (CALLBACK* gcgetheapsize)(); | ||
| + | typedef void (CALLBACK* gcenabledisable)(); | ||
| + | void 心眼() | ||
| + | { | ||
| + | auto module = :: | ||
| + | if (module != nullptr) | ||
| + | { | ||
| + | auto getheapsize = (gcgetheapsize):: | ||
| + | auto heapsize = getheapsize(); | ||
| + | auto disable = (gcenabledisable)((__int64):: | ||
| + | auto enable = (gcenabledisable)((__int64):: | ||
| + | disable(); | ||
| + | enable(); | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | これをトレースし、getheapsize(); | ||
| + | < | ||
| + | 00007FFAA93DB190 E9 D3 C5 13 00 | ||
| + | 00007FFAA93DB195 CC | ||
| + | 00007FFAA93DB196 CC | ||
| + | 00007FFAA93DB197 CC | ||
| + | 00007FFAA93DB198 E9 CF C6 13 00 | ||
| + | 00007FFAA93DB19D CC | ||
| + | 00007FFAA93DB19E CC | ||
| + | 00007FFAA93DB19F CC | ||
| + | 00007FFAA93DB1A0 E9 9B C6 13 00 | ||
| + | 00007FFAA93DB1A5 CC | ||
| + | 00007FFAA93DB1A6 CC | ||
| + | 00007FFAA93DB1A7 CC | ||
| + | 00007FFAA93DB1A8 E9 D7 D8 13 00 | ||
| + | 00007FFAA93DB1AD CC | ||
| + | 00007FFAA93DB1AE CC | ||
| + | 00007FFAA93DB1AF CC | ||
| + | </ | ||
| + | 実装順でそれぞれの関数にジャンプするようになっておるじゃろ。\\ | ||
| + | きれいに8バイトでパディングされておるじゃろ。\\ | ||
| + | mono_gc_get_heap_size\\ | ||
| + | < | ||
| + | 00007FFAA93DB190 E9 D3 C5 13 00 | ||
| + | </ | ||
| + | mono_gc_disable\\ | ||
| + | < | ||
| + | 00007FFAA93DB198 E9 CF C6 13 00 | ||
| + | </ | ||
| + | mono_gc_enable\\ | ||
| + | < | ||
| + | 00007FFAA93DB1A0 E9 9B C6 13 00 | ||
| + | </ | ||
| + | 今度こそこれでわかるな?\\ | ||
| + | 飛んだ先が正しいかもちゃんとステップインして確認するのじゃぞ?\\ | ||