---
name: "kdb_md"
section: "1"
platform: "linux"
package: "kernel-patch-kdb"
version: "4.4-10.1"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/kdb_md"
---

# kdb\_md(1)

## NAME

md, mdWcN, mdr, mds, mm, mmW- Memory manipulation commands

## SYNOPSIS

md \[ *address-expression* \[ *line-count* \[*output-radix* \] \] \]

md*W*c*n* \[ *address-expression* \[ *line-count* \[*output-radix* \] \] \]

mdp *physical-address-expression*,*bytes*

mdr *address-expression*,*bytes*

mds \[ *address-expression* \[ *line-count* \[*output-radix* \] \] \]

mm *address-expression* *new-contents*

mm*W* *address-expression* *new-contents*

## DESCRIPTION

The **md** command is used to display the contents of memory. The *address-expression* may be a numeric value (decimal or hexidecimal), a symbol name, a register name preceeded by one or more percent symbols '%', an environment variable name preceeded by a currency symbol '$',  or a simple expression consisting of a symbol name, an addition or subtraction character and a numeric value (decimal or hexidecimal).

If an address is specified and the *line-count* or *radix* arguments are omitted, they default to the values of the **MDCOUNT** and **RADIX** environment variables respectively.  If the **MDCOUNT** or **RADIX** environment variables are unset, the appropriate defaults will be used \[see **ENVIRONMENT** below\].  If no address is specified then md resumes after the last address printed, using the previous values of count and radix.  The start address is rounded down to a multiple of the BYTESPERWORD (md) or width (md*W*).

md uses the current value of environment variable **BYTESPERWORD** to read the data.  When reading hardware registers that require special widths, it is more convenient to use md*W*c*n* where *W* is the width for this command and c*n* is the number of entries to read.  For example, md1c20 reads 20 bytes, 1 at a time.  To continue printing just type md, the width and count apply to following md commands with no parameters.  **Note:** The count is the number of repeats of the width, unlike MDCOUNT which gives the number of md lines to print.

The **mdp** command displays the contents of physical memory, starting at the specified physical address for the specified number of bytes. The address is preceded by 'phys'.

The **mdr** command displays the raw contents of memory, starting at the specified address for the specified number of bytes. The data is printed in one line without a leading address and no trailing character conversion. **mdr** is intended for interfacing with external debuggers, it is of little use to humans.

The **mds** command displays the contents of memory one word per line and attempts to correlate the contents of each word with a symbol in the symbol table.   If no symbol is found, the ascii representation of the word is printed, otherwise the symbol name and offset from symbol value are printed. By default the section data is printed for kernel symbols.

The **mm** and **mm***W* commands allow modification of memory.   The bytes at the address represented by *address-expression* are changed to *new-contents*.  *new-contents* is allowed to be an *address-expression*. **mm** changes a machine word, **mm***W* changes *W* bytes at that address.

## LIMITATIONS

None.

## ENVIRONMENT

- MDCOUNT

  This environment variable (default=8) defines the number of lines that will be displayed by each invocation of the **md** command.

- RADIX

  This environment variable (default=16) defines the radix used to print the memory contents.

- BYTESPERWORD

  This environment variable (default=4) selects the width of output data when printing memory contents.  Select the value two to get 16-bit word output, select the value one to get byte output.

- LINES

  This environment variable governs the number of lines of output that will be presented before the kernel debugger built-in pager pauses the output.   This variable only affects the functioning of the **md** and **mds** if the **MDCOUNT** variable is set to a value greater than the **LINES** variable.

- NOSECT

  If the **NOSECT** environment variable is non-zero then the section information is suppressed. The default is NOSECT=1 so section data is suppressed; use set NOSECT=0 to see section information.

## SMP CONSIDERATIONS

None.

## EXAMPLES

- md %edx

  Display memory starting at the address contained in register **%edx**.

- mds %esp

  Display stack contents symbolically.   This command is quite useful in manual stack traceback.

- mm 0xc0252110 0x25

  Change the memory location at 0xc0252110 to the value 0x25.

- md chrdev\_table 15

  Display 15 lines (at 16 bytes per line) starting at address represented by the symbol *chrdev\_table*.
