现在的位置: 首页 > 综合 > 正文

chronmium IPC的调试心得~

2014年01月29日 ⁄ 综合 ⁄ 共 913字 ⁄ 字号 评论关闭

chronmium 默认是一个tab一个进程,主进程获得需要的URL,通过IPC消息传递给render进程。render进程进行网络请求,显示。

调试:

1.VS调试里面附加到进程,进行多进程调试。

2.如何知道我们要调试的进程的进程ID?在沙盒的代码

   target_process.cc中的

   if (!::CreateProcessAsUserW(lockdown_token_,
                              exe_path,
                              cmd_line.get(),
                              NULL,   // No security attribute.
                              NULL,   // No thread attribute.
                              inherit_handles,
                              flags,
                              NULL,   // Use the environment of the caller.
                              NULL,   // Use current directory of the caller.
                              startup_info.startup_info(),
                              process_info.Receive())) {
    return ::GetLastError();
  }

  后面下断点   attention!!这个时候进程还没跑起来,不要去附加,容易直接结束掉这个新生成的进程。后面再去附加,比如在旧的render进程获得某个消息后再去附加。

  ps:chronmium 对不同的网站的请求是生成一个新render进程,请求结束后替换原来的,所以一定要附加到这个新进程上面。

3.附加上这个新进程后,在render_view_impl.cc中的

   void RenderViewImpl::OnNavigate(const ViewMsg_Navigate_Params& params) {这里下断点,这边就是网络请求的过程。至于这个IPC消息是如何得到的,是通过跟踪主      进程的请求URL的操作一步一步跟进去看到的。

抱歉!评论已关闭.