MonoSymbolFile load_symfile(TargetMemoryAccess memory, TargetAddress address)
{
MonoSymbolFile symfile = null;
if (symfile_hash.Contains (address))
return (MonoSymbolFile) symfile_hash [address];
try {
symfile = new MonoSymbolFile (this, process, memory, address);
} catch (C.MonoSymbolFileException ex) {
Console.WriteLine (ex.Message);
} catch (SymbolTableException ex) {
Console.WriteLine (ex.Message);
} catch (Exception ex) {
Console.WriteLine (ex);
}
symfile_hash.Add (address, symfile);
if (symfile == null)
return null;
if (!assembly_by_name.Contains (symfile.Assembly.Name.FullName)) {
assembly_hash.Add (symfile.Assembly, symfile);
assembly_by_name.Add (symfile.Assembly.Name.FullName, symfile);
}
symfile_by_image_addr.Add (symfile.MonoImage, symfile);
symfile_by_index.Add (symfile.Index, symfile);
return symfile;
}