Сегментированный загрузчик файла C#

часы только повреждения на записи, rwatch позволил Вам повредиться на чтении, и , awatch позволил Вам повредиться на чтении-записи.

можно установить контрольные точки чтения на ячейках памяти:

gdb$ rwatch *0xfeedface
Hardware read watchpoint 2: *0xfeedface

, но одно ограничение относится к rwatch и командам awatch; Вы не можете использовать gdb переменные в выражениях:

gdb$ rwatch $ebx+0xec1a04f
Expression cannot be implemented with read/access watchpoint.

, Таким образом, необходимо развернуть их сами:

gdb$ print $ebx 
$13 = 0x135700
gdb$ rwatch *0x135700+0xec1a04f
Hardware read watchpoint 3: *0x135700 + 0xec1a04f
gdb$ c
Hardware read watchpoint 3: *0x135700 + 0xec1a04f

Value = 0xec34daf
0x9527d6e7 in objc_msgSend ()

Редактирование: , О, и между прочим. Вам нужны или аппаратные средства или в программная поддержка . Программное обеспечение, очевидно, намного медленнее. Чтобы узнать, поддерживает ли Ваша ОС аппаратные контрольные точки, Вы видите параметр среды can-use-hw-watchpoints .

gdb$ show can-use-hw-watchpoints
Debugger's willingness to use watchpoint hardware is 1.
7
задан Sam 6 May 2015 в 18:57
поделиться

1 ответ

Я понял это, просто подумал, что оставлю ответ всем, у кого есть подобные проблемы. Вокруг потока записи файла требуется блокировка.

public void writeFile(byte[] buffer, int start, int size)
    {
        mFileStream.Seek(start, SeekOrigin.Begin);
        mFileStream.Write(buffer, 0, size);
        return;
    }

становится

public void writeFile(byte[] buffer, int start, int size)
    {
        lock (mFileStream)
        {
        mFileStream.Seek(start, SeekOrigin.Begin);
        mFileStream.Write(buffer, 0, size);
        return;
        }
    }
11
ответ дан 6 December 2019 в 23:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: