码迷,mamicode.com
首页 > 其他好文 > 详细

Google之Chromium浏览器源码学习——base公共通用库(四)

时间:2015-09-19 12:25:14      阅读:340      评论:0      收藏:0      [点我收藏+]

标签:

  本文将介绍debug调试相关的内容,包括调试器、性能分析、堆跟踪、跟踪事件等;

  alias.h:Alias函数,提供防止载微软的编译器优化某参数变量的操作,内部通过#pragma optimize("", off)与#pragma optimize("", on)来实现关闭所有的优化选项,再恢复它们到原始(或默认)的设定;事实上Alias内部未实现任何的操作。

  debugger.h:

  1. SpawnDebuggerOnProcess:提供开始注册系统级的JIT即时调试器,并将其附加到指定的进程中;可以看到内部提供跨平台的版本,微软和posix版本;微软版本通过访问注册表HKEY_LOCAL_MACHINE下SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AeDebug中的键为Debugger的值,如"C:\windows\system32\vsjitdebugger.exe" -p %ld -e %ld,其中vsjitdebugger.exe为微软的VS即时调试器,参数-p %ld为将要调试的进程ID,-e %ld为可执行程序的进程ID,实际上可以指定一样的进程ID值即可,此后创建新的进程开启该调试;posix版本调用系统函数system,参数xterm -e ‘gdb --pid=%u‘ &,也为进程ID,gdb调试工具。

  2. WaitForDebugger:等待指定的时间秒wait_seconds则返回,或设置参数silent为false时,则若调试器检查到抛出异常则进入调试;内部采用for循环次数为至多10*wait_seconds次,每次等待100毫秒,刚好wait_seconds秒,并循环检查BeingDebugged(若指定进程被attach运行于调试器时,返回值为真);

  3. BeingDebugged:提供不同版本,微软版本通过IsDebuggerPresent函数判断(判断调用进程是否由用户模式的调试器调试,实际上);其他版本细分为linux、BSD、ANDROID等版本,暂不细说明;

  4. BreakDebugger:提供不同版本,微软版本通过__debugbreak,暂停程序执行,打开调试器,进入调试模式;

  5. SetSuppressDebugUI,IsDebugUISuppressed目前用在UI界面是否测试设置的操作。

  debug_on_start_win.h:

  1. 提供了一个在开启运行程序时刻支持调试的类,仅提供Init,FindArgument静态接口实现;通过命令行的方式调试,至多等待时间60s进入调试;而对于命令行调试进程则等待被调试调用。目前其他地方或项目项目暂未使用到该类提供的功能。

Google之Chromium浏览器源码学习——base公共通用库(四)

标签:

原文地址:http://www.cnblogs.com/haomiao/p/4821196.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!