---
name: "dwarf_get_str"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/dwarf_get_str"
---

# dwarf\_get\_str(3)

retrieve a string from the DWARF string section

## NAME

**dwarf\_get\_str** – retrieve a string from the DWARF string section

## LIBRARY

library “libdwarf”

## SYNOPSIS

**#include \<libdwarf.h\>**

*int*\

**dwarf\_get\_str**(*Dwarf\_Debug dbg*, *Dwarf\_Off offset*, *char \*\*string*, *Dwarf\_Signed \*len*, *Dwarf\_Error \*err*);

## DESCRIPTION

Function **dwarf\_get\_str**() retrieves a NUL-terminated string from the DWARF string section “.debug\_str”.

Argument *dbg* should reference a DWARF debug context allocated using [dwarf\_init(3)](/dwarf_init/3.md).

Argument *offset* should be an offset, relative to the “.debug\_str” section, specifying the start of the desired string.

Argument *string* should point to a location which will hold a returned pointer to a NUL-terminated string.

Argument *len* should point to a location which will hold the length of the returned string. The returned length does not include the space needed for the NUL-terminator.

If argument *err* is not NULL, it will be used to store error information in case of an error.

## RETURN VALUES

Function **dwarf\_get\_str**() returns DW\_DLV\_OK when it succeeds. It returns DW\_DLV\_NO\_ENTRY if there is no “.debug\_str” section associated with the specified debugging context, or if the provided offset *offset* is at the very end of “.debug\_str” section. In case of an error, it returns DW\_DLV\_ERROR and sets the argument *err*.

## EXAMPLES

To retrieve all the strings in the DWARF string section, use:

```
Dwarf_Debug dbg;
Dwarf_Off offset;
Dwarf_Signed len;
Dwarf_Error de;
char *str;
int ret
offset = 0;
while ((ret = dwarf_get_str(dbg, offset, &str, &len, &de)) ==
	DW_DLV_OK) {
	/* .. Use the retrieved string. .. */
	offset += len + 1; /* Account for the terminating NUL. */
}
if (ret == DW_DLV_ERROR)
	warnx("dwarf_get_str: %s", dwarf_errmsg(de));
```

## ERRORS

Function **dwarf\_get\_str**() can fail with:

- \[DW\_DLE\_ARGUMENT\]

  One of the arguments *dbg*, *string* or *len* was NULL.

- \[DW\_DLE\_ARGUMENT\]

  Argument *offset* was out of range.

- \[DW\_DLE\_NO\_ENTRY\]

  The debugging context *dbg* did not contain a “.debug\_str” string section.

- \[DW\_DLE\_NO\_ENTRY\]

  Argument *offset* was at the very end of the “.debug\_str” section.

## SEE ALSO

[dwarf(3)](/dwarf/3.md), [dwarf\_init(3)](/dwarf_init/3.md)
