通过Perl和命令提示符运行时,相同的cdb命令产生不同的结果

时间:2017-01-17 11:10:55

标签: perl windbg symbols

我们通过转储文件网站运行CDB来分析转储。我们运行以下命令

sub setSymbolPath{
        $ENV{'_NT_SYMBOL_PATH'} = 'SRV*c:\\websymbols*http://msdl.microsoft.com/download/symbols;
                                    SRV*c:\\websymbols*http://ctxsym.citrix.com/symbols;                                 
                                    ';
setSymbolPath();        
## $dump_file is the full path to the dump file with a file name
## $mini_stack is the full path to the output file with a file name
open (DUMPFILE, "c:\\PROGRA~1\\DEBUGG~1\\cdb.exe  
                -z \"$dump_file\" -lines -c \".logopen $mini_stack;!sym     noisy;.reload;!analyze -v;.ecxr;!for_each_frame dv /t;.logclose;q\" |");
close DUMPFILE;  

当我们通过命令提示符运行CDB时,它可以加载Microsoft组件和工作文件的符号文件。但是,当相同的命令通过网站运行时,CDB无法找到Microsoft组件的符号。 代码用Perl编写,下面是运行CDB的代码片段。

User.findOne(1).exec(function(err, user) {
  user = user.toJSON();
  var moduleIds = _.map(user.grades, 'mod_id');

  Module.find(moduleIds).exec(function(err, modules) {
    _.forEach(user.grades, function(grade) {
      var module = _.find(modules, { 'id': grade.mod_id });
      grade.module = module;
    });
    console.log('User', user);
    return;
  });
});

0 个答案:

没有答案