Pin: инструмент для указанной библиотеки

Я выполняю простую задачу инструментария для исполняемого файла и связанных с ним общих библиотек, записываю все выполненные инструкции в основной файл, а также в общие библиотеки.

Тем не мение, Pin всегда бросать

Pin is out of memory: MmapChecked 

Во время приборов. Так как я работаю над 32-битной системой, каждый раз, когда она достигает потребления памяти 3G, процесс инструментирования завершается сбоем.

Я хотел бы поработать на этой 32-битной системе, поскольку на этой платформе довольно много общих библиотек. С другой стороны, потому что на самом деле меня интересует только одна общая библиотека, поэтому я думаю найти способ записывать только исполняемые инструкции в основной исполняемый файл, а также в эту специальную библиотеку.

Тем не менее, я понятия не имею, можно ли / как это сделать. Прямо сейчас, перед измерительными приборами, мои настройки:

PIN_LockClient();
IMG img = IMG_FindByAddress(INS_Address(ins));
PIN_UnlockClient();

// if (IMG_Valid(img) && IMG_IsMainExecutable(img)){
if (IMG_Valid(img)) {           <--------------------- this line
    INS_InsertCall(ins, IPOINT_BEFORE, (AFUNPTR)insCallBack,
                   IARG_BOOL,
                   IARG_ADDRINT, INS_Address(ins),
                   IARG_PTR, new string(INS_Disassemble(ins)),
                   IARG_CONTEXT,
                   IARG_ADDRINT, INS_NextAddress(ins),
                   IARG_END);

}

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

Моя тестовая платформа - 32-битная x86 Ubuntu 14.04. И целью теста является 32-битный двоичный код ELF.

Таким образом, мой вопрос: учитывая мою ситуацию, должен ли я настроить инструмент только на мою интересующую библиотеку, чтобы преодолеть исключение памяти? Если так, как я могу это сделать?

1 ответ

Решение

Используйте IMG_Name, чтобы получить имя файла, как его видит Пин, и сравнить его с общим объектом интереса. InstLib предоставляет встроенную реализацию этого, но это легко сделать самостоятельно.

Другие вопросы по тегам