2012-11-14 16 views
6

Ben Chrome'un parçacığı yığın bakıyordu:ovly_debug_event kromda ne yapıyor? Ben parçacığı çok buna benzer bir iz olduğunu fark

0, wow64cpu.dll!TurboDispatchJumpAddressEnd+0x6c0 
1, wow64cpu.dll!TurboDispatchJumpAddressEnd+0x4a8 
2, wow64.dll!Wow64SystemServiceEx+0x1ce 
3, wow64.dll!Wow64LdrpInitialize+0x429 
4, ntdll.dll!RtlIsDosDeviceName_U+0x24c87 
5, ntdll.dll!LdrInitializeThunk+0xe 
6, ntdll.dll!ZwWaitForSingleObject+0x15 
7, kernel32.dll!WaitForSingleObjectEx+0x43 
8, kernel32.dll!WaitForSingleObject+0x12 
9, chrome.dll!ovly_debug_event+0x16574 
10, chrome.dll!ovly_debug_event+0x14904 
11, chrome.dll!ovly_debug_event+0x14826 
12, chrome.dll!ovly_debug_event+0x16d19 
13, chrome.dll!ovly_debug_event+0x1bea1b 
14, chrome.dll!ovly_debug_event+0xe8ff4 
15, chrome.dll!ovly_debug_event+0x16b50 
16, chrome.dll!ovly_debug_event+0x16ab2 
17, kernel32.dll!BaseThreadInitThunk+0x12 
18, ntdll.dll!RtlInitializeExceptionChain+0x63 
19, ntdll.dll!RtlInitializeExceptionChain+0x36 

krom kaynağı neredeyse boş fonksiyonu olarak ovly_debug_event beyan görünüyor sel_ldr.c aşağıdaki kod vardır : Neden krom sadece hata ayıklama ve krom neredeyse boş bir fonksiyonu çok fazla zaman harcamak gibi görünüyor:

void _ovly_debug_event (void) { 
#ifdef __GNUC__ 
    /* 
    * The asm volatile is here as instructed by the GCC docs. 
    * It's not enough to declare a function noinline. 
    * GCC will still look inside the function to see if it's worth calling. 
    */ 
    __asm__ volatile (""); 
#elif NACL_WINDOWS 
    /* 
    * Visual Studio inlines empty functions even with noinline attribute, 
    * so we need a compile memory barrier to make this function not to be 
    * inlined. Also, it guarantees that nacl_global_xlate_base initialization 
    * is not reordered. This is important for gdb since it sets breakpoint on 
    * this function and reads nacl_global_xlate_base value. 
    */ 
    _ReadWriteBarrier(); 
#endif 
} 

static void StopForDebuggerInit (uintptr_t mem_start) { 
    /* Put xlate_base in a place where gdb can find it. */ 
    nacl_global_xlate_base = mem_start; 

    NaClSandboxMemoryStartForValgrind(mem_start); 

    _ovly_debug_event(); 
} 

Bu soruyu akla?

cevap

4

Bu işleve 0x16574 gibi büyük sapmaları not edin. Görünüşe göre chrome.dll için özel semboller yok, bu yüzden hata ayıklayıcısına en yakın (iyi, en yakın önceki) publically exported symbol.

Diğer bir deyişle, _ovly_debug_event içinde değilsiniz. Yürütülebilir dosyadan sonra ortaya konan bir işlevdesiniz, ancak bu, genel olarak dışa aktarılmadı. Eğer gerçekte neler görmek istiyorsanız

Eğer sembol yoluna http://chromium-browser-symsrv.commondatastorage.googleapis.com ekleyebilir, bu sorunu çözmek için deneyin. windbg olarak, komut

.sympath olurdu + SRV * C: \ http://chromium-browser-symsrv.commondatastorage.googleapis.com