summaryrefslogtreecommitdiff
path: root/.gdbinit
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /.gdbinit
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloaduxp-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
Add m-esr52 at 52.6.0
Diffstat (limited to '.gdbinit')
-rw-r--r--.gdbinit189
1 files changed, 189 insertions, 0 deletions
diff --git a/.gdbinit b/.gdbinit
new file mode 100644
index 0000000000..dd9a005f67
--- /dev/null
+++ b/.gdbinit
@@ -0,0 +1,189 @@
+# .gdbinit file for debugging Mozilla
+
+# You may need to put an 'add-auto-load-safe-path' command in your
+# $HOME/.gdbinit file to get GDB to trust this file. If your builds are
+# generally in $HOME/moz, then you can say:
+#
+# add-auto-load-safe-path ~/moz
+
+# Don't stop for the SIG32/33/etc signals that Flash produces
+handle SIG32 noprint nostop pass
+handle SIG33 noprint nostop pass
+handle SIGPIPE noprint nostop pass
+
+# Don't stop for certain other signals where it's not useful,
+# such as the SIG64 signals triggered by the Linux
+# sandboxing code on older kernels.
+handle SIG38 noprint nostop pass
+handle SIG64 noprint nostop pass
+
+# Show the concrete types behind nsIFoo
+set print object on
+
+# run when using the auto-solib-add trick
+def prun
+ tbreak main
+ run
+ set auto-solib-add 0
+ cont
+end
+
+# run -mail, when using the auto-solib-add trick
+def pmail
+ tbreak main
+ run -mail
+ set auto-solib-add 0
+ cont
+end
+
+# Define a "pu" command to display PRUnichar * strings (100 chars max)
+# Also allows an optional argument for how many chars to print as long as
+# it's less than 100.
+def pu
+ set $uni = $arg0
+ if $argc == 2
+ set $limit = $arg1
+ if $limit > 100
+ set $limit = 100
+ end
+ else
+ set $limit = 100
+ end
+ # scratch array with space for 100 chars plus null terminator. Make
+ # sure to not use ' ' as the char so this copy/pastes well.
+ set $scratch = "____________________________________________________________________________________________________"
+ set $i = 0
+ set $scratch_idx = 0
+ while (*$uni && $i++ < $limit)
+ if (*$uni < 0x80)
+ set $scratch[$scratch_idx++] = *(char*)$uni++
+ else
+ if ($scratch_idx > 0)
+ set $scratch[$scratch_idx] = '\0'
+ print $scratch
+ set $scratch_idx = 0
+ end
+ print /x *(short*)$uni++
+ end
+ end
+ if ($scratch_idx > 0)
+ set $scratch[$scratch_idx] = '\0'
+ print $scratch
+ end
+end
+
+# Define a "ps" command to display subclasses of nsAC?String. Note that
+# this assumes strings as of Gecko 1.9 (well, and probably a few
+# releases before that as well); going back far enough will get you
+# to string classes that this function doesn't work for.
+def ps
+ set $str = $arg0
+ if (sizeof(*$str.mData) == 1 && ($str.mFlags & 1) != 0)
+ print $str.mData
+ else
+ pu $str.mData $str.mLength
+ end
+end
+
+# Define a "pa" command to display the string value for an nsIAtom
+def pa
+ set $atom = $arg0
+ if (sizeof(*((&*$atom)->mString)) == 2)
+ pu (&*$atom)->mString
+ end
+end
+
+# define a "pxul" command to display the type of a XUL element from
+# an nsXULElement* pointer.
+def pxul
+ set $p = $arg0
+ print $p->mNodeInfo.mRawPtr->mInner.mName->mStaticAtom->mString
+end
+
+# define a "prefcnt" command to display the refcount of an XPCOM obj
+def prefcnt
+ set $p = $arg0
+ print ((nsPurpleBufferEntry*)$p->mRefCnt.mTagged)->mRefCnt
+end
+
+# define a "ptag" command to display the tag name of a content node
+def ptag
+ set $p = $arg0
+ pa $p->mNodeInfo.mRawPtr->mInner.mName
+end
+
+##
+## nsTArray
+##
+define ptarray
+ if $argc == 0
+ help ptarray
+ else
+ set $size = $arg0.mHdr->mLength
+ set $capacity = $arg0.mHdr->mCapacity
+ set $size_max = $size - 1
+ set $elts = $arg0.Elements()
+ end
+ if $argc == 1
+ set $i = 0
+ while $i < $size
+ printf "elem[%u]: ", $i
+ p *($elts + $i)
+ set $i++
+ end
+ end
+ if $argc == 2
+ set $idx = $arg1
+ if $idx < 0 || $idx > $size_max
+ printf "idx1, idx2 are not in acceptable range: [0..%u].\n", $size_max
+ else
+ printf "elem[%u]: ", $idx
+ p *($elts + $idx)
+ end
+ end
+ if $argc == 3
+ set $start_idx = $arg1
+ set $stop_idx = $arg2
+ if $start_idx > $stop_idx
+ set $tmp_idx = $start_idx
+ set $start_idx = $stop_idx
+ set $stop_idx = $tmp_idx
+ end
+ if $start_idx < 0 || $stop_idx < 0 || $start_idx > $size_max || $stop_idx > $size_max
+ printf "idx1, idx2 are not in acceptable range: [0..%u].\n", $size_max
+ else
+ set $i = $start_idx
+ while $i <= $stop_idx
+ printf "elem[%u]: ", $i
+ p *($elts + $i)
+ set $i++
+ end
+ end
+ end
+ if $argc > 0
+ printf "nsTArray length = %u\n", $size
+ printf "nsTArray capacity = %u\n", $capacity
+ printf "Element "
+ whatis *$elts
+ end
+end
+
+document ptarray
+ Prints nsTArray information.
+ Syntax: ptarray
+ Note: idx, idx1 and idx2 must be in acceptable range [0...size()-1].
+ Examples:
+ ptarray a - Prints tarray content, size, capacity and T typedef
+ ptarray a 0 - Prints element[idx] from tarray
+ ptarray a 1 2 - Prints elements in range [idx1..idx2] from tarray
+end
+
+def js
+ call DumpJSStack()
+end
+
+def ft
+ call $arg0->DumpFrameTree()
+end
+
+source .gdbinit_python