mozilla

Compare Revisions

Debugging Mozilla with gdb

Change Revisions

Revision 68153:

Revision 68153 by jdm on

Revision 68154:

Revision 68154 by jdm on

Title:
Debugging Mozilla with gdb
Debugging Mozilla with gdb
Slug:
Debugging_Mozilla_with_gdb
Debugging_Mozilla_with_gdb
Content:

Revision 68153
Revision 68154
n133  define "pu" command to display PRUnichar * strings (100 charsn133Define "pu" command to display PRUnichar * strings (100 chars
> max)> max)
134# Also allows an optional argument for how many chars to print as
 > long as
135# it's less than 100.
134  def pu136def pu
135    set $uni = $arg0137  set $uni = $arg0
138  if $argc == 2
139    set $limit = $arg1
140    if $limit > 100
141      set $limit = 100
142    end
143  else
144    set $limit = 100
145  end
146  # scratch array with space for 100 chars plus null terminator. 
 > Make
147  # sure to not use ' ' as the char so this copy/pastes well.
148  set $scratch = "_______________________________________________
 >_____________________________________________________"
136    set $i = 0149  set $i = 0
150  set $scratch_idx = 0
137    while (*$uni && $i++<100)151  while (*$uni && $i++ < $limit)
138      if (*$uni < 0x80)152    if (*$uni < 0x80)
139        printf "%c" *(char*)$uni++153      set $scratch[$scratch_idx++] = *(char*)$uni++
140      else154    else
141        printf "%xh" *(short*)$uni++155      if ($scratch_idx > 0)
156        set $scratch[$scratch_idx] = '\0'
157        print $scratch
158        set $scratch_idx = 0
nn160      print /x *(short*)$uni++
n144    printf "\n"n
t146  t163  if ($scratch_idx > 0)
147  # define "ps" command to display nsString/nsAutoString/nsCStrin164    set $scratch[$scratch_idx] = '\0'
>g/nsCAutoString 
165    print $scratch
166  end
167end
168 
169# Define a "ps" command to display subclasses of nsAC?String.  No
 >te that
170# this assumes strings as of Gecko 1.9 (well, and probably a few
171# releases before that as well); going back far enough will get y
 >ou
172# to string classes that this function doesn't work for.
148  def ps173def ps
149    set $ns = $arg0174  set $str = $arg0
150    if ($ns->mCharSize)175  if (sizeof(*$str.mData) == 1 && ($str.mFlags & 1) !
 >= 0)
151      pu $ns->mUStr176    print $str.mData
152    else177  else
153      print $ns->mStr178    pu $str.mData $str.mLength
154    end179  end
155  end  180end

Back to History