Struct gimli::read::DebuggingInformationEntry [−][src]
A Debugging Information Entry (DIE).
DIEs have a set of attributes and optionally have children DIEs as well.
Implementations
impl<'abbrev, 'unit, R, Offset> DebuggingInformationEntry<'abbrev, 'unit, R, Offset> where
R: Reader<Offset = Offset>,
Offset: ReaderOffset,
[src]
R: Reader<Offset = Offset>,
Offset: ReaderOffset,
pub fn new(
offset: UnitOffset<Offset>,
attrs_slice: R,
abbrev: &'abbrev Abbreviation,
unit: &'unit UnitHeader<R, Offset>
) -> Self
[src]
offset: UnitOffset<Offset>,
attrs_slice: R,
abbrev: &'abbrev Abbreviation,
unit: &'unit UnitHeader<R, Offset>
) -> Self
Construct a new DebuggingInformationEntry
.
pub fn code(&self) -> u64
[src]
Get this entry’s code.
pub fn offset(&self) -> UnitOffset<Offset>
[src]
Get this entry’s offset.
pub fn tag(&self) -> DwTag
[src]
Get this entry’s DW_TAG_whatever
tag.
let entry = get_some_entry(); match entry.tag() { gimli::DW_TAG_subprogram => println!("this entry contains debug info about a function"), gimli::DW_TAG_inlined_subroutine => println!("this entry contains debug info about a particular instance of inlining"), gimli::DW_TAG_variable => println!("this entry contains debug info about a local variable"), gimli::DW_TAG_formal_parameter => println!("this entry contains debug info about a function parameter"), otherwise => println!("this entry is some other kind of data: {:?}", otherwise), };
pub fn has_children(&self) -> bool
[src]
Return true if this entry’s type can have children, false otherwise.
pub fn attrs<'me>(&'me self) -> AttrsIter<'abbrev, 'me, 'unit, R>
[src]
Iterate over this entry’s set of attributes.
use gimli::{DebugAbbrev, DebugInfo, LittleEndian}; // Read the `.debug_info` section. let debug_info = DebugInfo::new(read_debug_info_section_somehow(), LittleEndian); // Get the data about the first compilation unit out of the `.debug_info`. let unit = debug_info.units().next() .expect("Should have at least one compilation unit") .expect("and it should parse ok"); // Read the `.debug_abbrev` section and parse the // abbreviations for our compilation unit. let debug_abbrev = DebugAbbrev::new(read_debug_abbrev_section_somehow(), LittleEndian); let abbrevs = unit.abbreviations(&debug_abbrev).unwrap(); // Get the first entry from that compilation unit. let mut cursor = unit.entries(&abbrevs); let (_, entry) = cursor.next_dfs() .expect("Should parse next entry") .expect("Should have at least one entry"); // Finally, print the first entry's attributes. let mut attrs = entry.attrs(); while let Some(attr) = attrs.next().unwrap() { println!("Attribute name = {:?}", attr.name()); println!("Attribute value = {:?}", attr.value()); }
Can be used with
FallibleIterator
.
pub fn attr(&self, name: DwAt) -> Result<Option<Attribute<R>>>
[src]
Find the first attribute in this entry which has the given name,
and return it. Returns Ok(None)
if no attribute is found.
pub fn attr_value_raw(&self, name: DwAt) -> Result<Option<AttributeValue<R>>>
[src]
Find the first attribute in this entry which has the given name,
and return its raw value. Returns Ok(None)
if no attribute is found.
pub fn attr_value(&self, name: DwAt) -> Result<Option<AttributeValue<R>>>
[src]
Find the first attribute in this entry which has the given name,
and return its normalized value. Returns Ok(None)
if no
attribute is found.
Trait Implementations
impl<'abbrev, 'unit, R: Clone, Offset: Clone> Clone for DebuggingInformationEntry<'abbrev, 'unit, R, Offset> where
R: Reader<Offset = Offset>,
Offset: ReaderOffset,
[src]
R: Reader<Offset = Offset>,
Offset: ReaderOffset,
fn clone(&self) -> DebuggingInformationEntry<'abbrev, 'unit, R, Offset>
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl<'abbrev, 'unit, R: Debug, Offset: Debug> Debug for DebuggingInformationEntry<'abbrev, 'unit, R, Offset> where
R: Reader<Offset = Offset>,
Offset: ReaderOffset,
[src]
R: Reader<Offset = Offset>,
Offset: ReaderOffset,
Auto Trait Implementations
impl<'abbrev, 'unit, R, Offset> Send for DebuggingInformationEntry<'abbrev, 'unit, R, Offset> where
Offset: Send + Sync,
R: Send + Sync,
Offset: Send + Sync,
R: Send + Sync,
impl<'abbrev, 'unit, R, Offset = <R as Reader>::Offset> !Sync for DebuggingInformationEntry<'abbrev, 'unit, R, Offset>
impl<'abbrev, 'unit, R, Offset> Unpin for DebuggingInformationEntry<'abbrev, 'unit, R, Offset> where
Offset: Unpin,
R: Unpin,
Offset: Unpin,
R: Unpin,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,