DCMD_PROC_BREAK
QNX SDP8.0Programmer's GuideDeveloper
Set or remove a breakpoint or watchpoint in the process that's associated with the file descriptor.
#include <sys/procfs.h>
#define DCMD_PROC_BREAK    (__DIOTF(_DCMD_PROC, __PROC_SUBCMD_PROCFS + 14, procfs_break))
The arguments to devctl() are:
| Argument | Value | 
|---|---|
| filedes | A file descriptor for the process. You must have opened the file descriptor for writing. | 
| dcmd | DCMD_PROC_BREAK | 
| dev_data_ptr | A pointer to a procfs_break structure | 
| n_bytes | sizeof(procfs_break) | 
| dev_info_ptr | NULL | 
The argument is a pointer to a procfs_break structure (see debug_break_t in <sys/debug.h>) that specifies the breakpoint to be set or removed. For example:
procfs_break        brk;
memset(&brk, 0, sizeof brk);
brk.type = _DEBUG_BREAK_EXEC;
brk.addr = acc->break_addr.offset;
brk.size = 0;
devctl(fd, DCMD_PROC_BREAK, &brk, sizeof brk, 0);
To set a breakpoint, use a size of 0 in the procfs_break structure. Additionally, to set a watchpoint, specify the width of the watchpoint area through the size field in the procfs_break structure, which ranges from 1 to 8 bytes. A size of -1 is used to delete either a breakpoint or a watchpoint.
  The types of breakpoints; one of the following:
  
- _DEBUG_BREAK_EXEC — execution breakpoint.
 - _DEBUG_BREAK_RD — read access watchpoint.
 - _DEBUG_BREAK_WR — write access watchpoint.
 - _DEBUG_BREAK_RW — read or write access watchpoint.
 - _DEBUG_BREAK_MODIFY — memory modified watchpoint.
 - _DEBUG_BREAK_RDM — read access watchpoint if supported; otherwise downgraded.
 - _DEBUG_BREAK_WRM — write access watchpoint if supported; otherwise downgraded.
 - _DEBUG_BREAK_RWM — read or write access watchpoint if supported; otherwise downgraded.
 
Note: 
  
- Unsupported access modes with no close behavioral approximation are rejected with an error. Otherwise, a supported approximation is made from the requested access mode.
 - Breakpoints other than _DEBUG_BREAK_EXEC are highly dependent on the hardware. In many architectures, other types of breakpoints cause the kernel to make the process run in single-step, checking the watchpoints each time, which can be very slow.
 
Page updated: 
