怎么建com的网站,东莞外贸公司网站建设,根路径 网站,购物网站开发费用GDB 配置 使用 GDB 扩展来配置 GDB 事实上我还是觉得原生的 GDB 就挺好#xff0c;速度快#xff0c;需要查看什么执行命令就可以。 GDB DashBoard https://github.com/cyrus-and/gdb-dashboard $sudo mkdir -m 777 ~/gdbinit; cd ~/gdbinit
$git clone https://github.com/c… GDB 配置 使用 GDB 扩展来配置 GDB 事实上我还是觉得原生的 GDB 就挺好速度快需要查看什么执行命令就可以。 GDB DashBoard https://github.com/cyrus-and/gdb-dashboard $sudo mkdir -m 777 ~/gdbinit; cd ~/gdbinit
$git clone https://github.com/cyrus-and/gdb-dashboard.git; sudo cp gdb-dashboard/.gdbinit ~/
$sudo echo set auto-load safe-path / ~/.gdbinit Gdbinit https://github.com/gdbinit/Gdbinit $cd ~/; $git clone https://github.com/gdbinit/Gdbinit.git
$sudo mv ~/.gdbinit ~/.gdbinit-rain; sudo cp ~/Gdbinit/gdbinit ~/.gdbinit
$sudo echo set auto-load safe-path / ~/.gdbinit 安装 CGDB 安装依赖项 makeinfo $sudo yum install texinfo 安装依赖项 ReadLine # Compile and install readline
$cd ~/; wget http://git.savannah.gnu.org/cgit/readline.git/snapshot/readline-master.tar.gz
$tar -zxvf readline-master.tar.gz; cd readline-master/
$./configure
$make
$sudo make install# Check current lib link
$ldconfig -p | grep readline\|history# Update lib link if needed
$sudo ldconfig /usr/local/lib 配置 CGDB 编译 # Clone cgdb source
$cd ~/; git clone git://github.com/cgdb/cgdb.git; cd ~/cgdb# Generate configure file which is not in source code
$./autogen.sh# Configure cgdb to be installed to /usr/local
$./configure --prefix/usr/local# Compile
$make 有可能在编译 ~/cgdb/lib/kui 会报如下错误 【原因】 kui.cpp 里面用了 C11 的特性 auto但是在编译的时候 makefile 里面没有指定 【解决方法】 $vim ~/cgdb/lib/kui/Makefile 添加 -stdc11 编译安装cgdb $sudo make make install 打印 STL contaner $cd ~/; wget http://www.yolinux.com/TUTORIALS/src/dbinit_stl_views-1.03.txt
$echo source ~/dbinit_stl_views-1.03.txt ~/.gdbinit# Run such command in GDB directly
# source ~/dbinit_stl_views-1.03.txt dbinit_stl_views-1.03.txt : #
# STL GDB evaluators/views/utilities - 1.03
#
# The new GDB commands:
# are entirely non instrumental
# do not depend on any inline(s) - e.g. size(), [], etc
# are extremely tolerant to debugger settings
#
# This file should be included in .gdbinit as following:
# source stl-views.gdb or just paste it into your .gdbinit file
#
# The following STL containers are currently supported:
#
# std::vectorT -- via pvector command
# std::listT -- via plist or plist_member command
# std::mapT,T -- via pmap or pmap_member command
# std::multimapT,T -- via pmap or pmap_member command
# std::setT -- via pset command
# std::multisetT -- via pset command
# std::dequeT -- via pdequeue command
# std::stackT -- via pstack command
# std::queueT -- via pqueue command
# std::priority_queueT -- via ppqueue command
# std::bitsetn -- via pbitset command
# std::string -- via pstring command
# std::widestring -- via pwstring command
#
# The end of this file contains (optional) C beautifiers
# Make sure your debugger supports $argc
#
# Simple GDB Macros writen by Dan Marinescu (H-PhD) - License GPL
# Inspired by intial work of Tom Malnar,
# Tony Novac (PhD) / Cornell / Stanford,
# Gilad Mishne (PhD) and Many Many Others.
# Contact: dan_c_marinescuyahoo.com (Subject: STL)
#
# Modified to work with g 4.3 by Anders Elton
# Also added _member functions, that instead of printing the entire class in map, prints a member.#
# std::vector
#define pvectorif $argc 0help pvectorelseset $size $arg0._M_impl._M_finish - $arg0._M_impl._M_startset $capacity $arg0._M_impl._M_end_of_storage - $arg0._M_impl._M_startset $size_max $size - 1endif $argc 1set $i 0while $i $sizeprintf elem[%u]: , $ip *($arg0._M_impl._M_start $i)set $iendendif $argc 2set $idx $arg1if $idx 0 || $idx $size_maxprintf idx1, idx2 are not in acceptable range: [0..%u].\n, $size_maxelseprintf elem[%u]: , $idxp *($arg0._M_impl._M_start $idx)endendif $argc 3set $start_idx $arg1set $stop_idx $arg2if $start_idx $stop_idxset $tmp_idx $start_idxset $start_idx $stop_idxset $stop_idx $tmp_idxendif $start_idx 0 || $stop_idx 0 || $start_idx $size_max || $stop_idx $size_maxprintf idx1, idx2 are not in acceptable range: [0..%u].\n, $size_maxelseset $i $start_idxwhile $i $stop_idxprintf elem[%u]: , $ip *($arg0._M_impl._M_start $i)set $iendendendif $argc 0printf Vector size %u\n, $sizeprintf Vector capacity %u\n, $capacityprintf Element whatis $arg0._M_impl._M_startend
enddocument pvectorPrints std::vectorT information.Syntax: pvector vector idx1 idx2Note: idx, idx1 and idx2 must be in acceptable range [0..vector.size()-1].Examples:pvector v - Prints vector content, size, capacity and T typedefpvector v 0 - Prints element[idx] from vectorpvector v 1 2 - Prints elements in range [idx1..idx2] from vector
end #
# std::list
#define plistif $argc 0help plistelseset $head $arg0._M_impl._M_nodeset $current $arg0._M_impl._M_node._M_nextset $size 0while $current ! $headif $argc 2printf elem[%u]: , $sizep *($arg1*)($current 1)endif $argc 3if $size $arg2printf elem[%u]: , $sizep *($arg1*)($current 1)endendset $current $current._M_nextset $sizeendprintf List size %u \n, $sizeif $argc 1printf List whatis $arg0printf Use plist variable_name element_type to see the elements in the list.\nendend
enddocument plistPrints std::listT information.Syntax: plist list T idx: Prints list size, if T defined all elements or just element at idxExamples:plist l - prints list size and definitionplist l int - prints all elements and list sizeplist l int 2 - prints the third element in the list (if exists) and list size
enddefine plist_memberif $argc 0help plist_memberelseset $head $arg0._M_impl._M_nodeset $current $arg0._M_impl._M_node._M_nextset $size 0while $current ! $headif $argc 3printf elem[%u]: , $sizep (*($arg1*)($current 1)).$arg2endif $argc 4if $size $arg3printf elem[%u]: , $sizep (*($arg1*)($current 1)).$arg2endendset $current $current._M_nextset $sizeendprintf List size %u \n, $sizeif $argc 1printf List whatis $arg0printf Use plist_member variable_name element_type member to see the elements in the list.\nendend
enddocument plist_memberPrints std::listT information.Syntax: plist list T idx: Prints list size, if T defined all elements or just element at idxExamples:plist_member l int member - prints all elements and list sizeplist_member l int member 2 - prints the third element in the list (if exists) and list size
end#
# std::map and std::multimap
#define pmapif $argc 0help pmapelseset $tree $arg0set $i 0set $node $tree._M_t._M_impl._M_header._M_leftset $end $tree._M_t._M_impl._M_headerset $tree_size $tree._M_t._M_impl._M_node_countif $argc 1printf Map whatis $treeprintf Use pmap variable_name left_element_type right_element_type to see the elements in the map.\nendif $argc 3while $i $tree_sizeset $value (void *)($node 1)printf elem[%u].left: , $ip *($arg1*)$valueset $value $value sizeof($arg1)printf elem[%u].right: , $ip *($arg2*)$valueif $node._M_right ! 0set $node $node._M_rightwhile $node._M_left ! 0set $node $node._M_leftendelseset $tmp_node $node._M_parentwhile $node $tmp_node._M_rightset $node $tmp_nodeset $tmp_node $tmp_node._M_parentendif $node._M_right ! $tmp_nodeset $node $tmp_nodeendendset $iendendif $argc 4set $idx $arg3set $ElementsFound 0while $i $tree_sizeset $value (void *)($node 1)if *($arg1*)$value $idxprintf elem[%u].left: , $ip *($arg1*)$valueset $value $value sizeof($arg1)printf elem[%u].right: , $ip *($arg2*)$valueset $ElementsFoundendif $node._M_right ! 0set $node $node._M_rightwhile $node._M_left ! 0set $node $node._M_leftendelseset $tmp_node $node._M_parentwhile $node $tmp_node._M_rightset $node $tmp_nodeset $tmp_node $tmp_node._M_parentendif $node._M_right ! $tmp_nodeset $node $tmp_nodeendendset $iendprintf Number of elements found %u\n, $ElementsFoundendif $argc 5set $idx1 $arg3set $idx2 $arg4set $ElementsFound 0while $i $tree_sizeset $value (void *)($node 1)set $valueLeft *($arg1*)$valueset $valueRight *($arg2*)($value sizeof($arg1))if $valueLeft $idx1 $valueRight $idx2printf elem[%u].left: , $ip $valueLeftprintf elem[%u].right: , $ip $valueRightset $ElementsFoundendif $node._M_right ! 0set $node $node._M_rightwhile $node._M_left ! 0set $node $node._M_leftendelseset $tmp_node $node._M_parentwhile $node $tmp_node._M_rightset $node $tmp_nodeset $tmp_node $tmp_node._M_parentendif $node._M_right ! $tmp_nodeset $node $tmp_nodeendendset $iendprintf Number of elements found %u\n, $ElementsFoundendprintf Map size %u\n, $tree_sizeend
enddocument pmapPrints std::mapTLeft and TRight or std::multimapTLeft and TRight information. Works for std::multimap as well.Syntax: pmap map TtypeLeft TypeRight valLeft valRight: Prints map size, if T defined all elements or just element(s) with val(s)Examples:pmap m - prints map size and definitionpmap m int int - prints all elements and map sizepmap m int int 20 - prints the element(s) with left-value 20 (if any) and map sizepmap m int int 20 200 - prints the element(s) with left-value 20 and right-value 200 (if any) and map size
enddefine pmap_memberif $argc 0help pmap_memberelseset $tree $arg0set $i 0set $node $tree._M_t._M_impl._M_header._M_leftset $end $tree._M_t._M_impl._M_headerset $tree_size $tree._M_t._M_impl._M_node_countif $argc 1printf Map whatis $treeprintf Use pmap variable_name left_element_type right_element_type to see the elements in the map.\nendif $argc 5while $i $tree_sizeset $value (void *)($node 1)printf elem[%u].left: , $ip (*($arg1*)$value).$arg2set $value $value sizeof($arg1)printf elem[%u].right: , $ip (*($arg3*)$value).$arg4if $node._M_right ! 0set $node $node._M_rightwhile $node._M_left ! 0set $node $node._M_leftendelseset $tmp_node $node._M_parentwhile $node $tmp_node._M_rightset $node $tmp_nodeset $tmp_node $tmp_node._M_parentendif $node._M_right ! $tmp_nodeset $node $tmp_nodeendendset $iendendif $argc 6set $idx $arg5set $ElementsFound 0while $i $tree_sizeset $value (void *)($node 1)if *($arg1*)$value $idxprintf elem[%u].left: , $ip (*($arg1*)$value).$arg2set $value $value sizeof($arg1)printf elem[%u].right: , $ip (*($arg3*)$value).$arg4set $ElementsFoundendif $node._M_right ! 0set $node $node._M_rightwhile $node._M_left ! 0set $node $node._M_leftendelseset $tmp_node $node._M_parentwhile $node $tmp_node._M_rightset $node $tmp_nodeset $tmp_node $tmp_node._M_parentendif $node._M_right ! $tmp_nodeset $node $tmp_nodeendendset $iendprintf Number of elements found %u\n, $ElementsFoundendprintf Map size %u\n, $tree_sizeend
enddocument pmap_memberPrints std::mapTLeft and TRight or std::multimapTLeft and TRight information. Works for std::multimap as well.Syntax: pmap map TtypeLeft TypeRight valLeft valRight: Prints map size, if T defined all elements or just element(s) with val(s)Examples:pmap_member m class1 member1 class2 member2 - prints class1.member1 : class2.member2pmap_member m class1 member1 class2 member2 lvalue - prints class1.member1 : class2.member2 where class1 lvalue
end#
# std::set and std::multiset
#define psetif $argc 0help psetelseset $tree $arg0set $i 0set $node $tree._M_t._M_impl._M_header._M_leftset $end $tree._M_t._M_impl._M_headerset $tree_size $tree._M_t._M_impl._M_node_countif $argc 1printf Set whatis $treeprintf Use pset variable_name element_type to see the elements in the set.\nendif $argc 2while $i $tree_sizeset $value (void *)($node 1)printf elem[%u]: , $ip *($arg1*)$valueif $node._M_right ! 0set $node $node._M_rightwhile $node._M_left ! 0set $node $node._M_leftendelseset $tmp_node $node._M_parentwhile $node $tmp_node._M_rightset $node $tmp_nodeset $tmp_node $tmp_node._M_parentendif $node._M_right ! $tmp_nodeset $node $tmp_nodeendendset $iendendif $argc 3set $idx $arg2set $ElementsFound 0while $i $tree_sizeset $value (void *)($node 1)if *($arg1*)$value $idxprintf elem[%u]: , $ip *($arg1*)$valueset $ElementsFoundendif $node._M_right ! 0set $node $node._M_rightwhile $node._M_left ! 0set $node $node._M_leftendelseset $tmp_node $node._M_parentwhile $node $tmp_node._M_rightset $node $tmp_nodeset $tmp_node $tmp_node._M_parentendif $node._M_right ! $tmp_nodeset $node $tmp_nodeendendset $iendprintf Number of elements found %u\n, $ElementsFoundendprintf Set size %u\n, $tree_sizeend
enddocument psetPrints std::setT or std::multisetT information. Works for std::multiset as well.Syntax: pset set T val: Prints set size, if T defined all elements or just element(s) having valExamples:pset s - prints set size and definitionpset s int - prints all elements and the size of spset s int 20 - prints the element(s) with value 20 (if any) and the size of s
end#
# std::dequeue
#define pdequeueif $argc 0help pdequeueelseset $size 0set $start_cur $arg0._M_impl._M_start._M_curset $start_last $arg0._M_impl._M_start._M_lastset $start_stop $start_lastwhile $start_cur ! $start_stopp *$start_curset $start_curset $sizeendset $finish_first $arg0._M_impl._M_finish._M_firstset $finish_cur $arg0._M_impl._M_finish._M_curset $finish_last $arg0._M_impl._M_finish._M_lastif $finish_cur $finish_lastset $finish_stop $finish_curelseset $finish_stop $finish_lastendwhile $finish_first ! $finish_stopp *$finish_firstset $finish_firstset $sizeendprintf Dequeue size %u\n, $sizeend
enddocument pdequeuePrints std::dequeueT information.Syntax: pdequeue dequeue: Prints dequeue size, if T defined all elementsDeque elements are listed left to right (left-most stands for front and right-most stands for back)Example:pdequeue d - prints all elements and size of d
end#
# std::stack
#define pstackif $argc 0help pstackelseset $start_cur $arg0.c._M_impl._M_start._M_curset $finish_cur $arg0.c._M_impl._M_finish._M_curset $size $finish_cur - $start_curset $i $size - 1while $i 0p *($start_cur $i)set $i--endprintf Stack size %u\n, $sizeend
enddocument pstackPrints std::stackT information.Syntax: pstack stack: Prints all elements and size of the stackStack elements are listed top to buttom (top-most element is the first to come on pop)Example:pstack s - prints all elements and the size of s
end#
# std::queue
#define pqueueif $argc 0help pqueueelseset $start_cur $arg0.c._M_impl._M_start._M_curset $finish_cur $arg0.c._M_impl._M_finish._M_curset $size $finish_cur - $start_curset $i 0while $i $sizep *($start_cur $i)set $iendprintf Queue size %u\n, $sizeend
enddocument pqueuePrints std::queueT information.Syntax: pqueue queue: Prints all elements and the size of the queueQueue elements are listed top to bottom (top-most element is the first to come on pop)Example:pqueue q - prints all elements and the size of q
end#
# std::priority_queue
#define ppqueueif $argc 0help ppqueueelseset $size $arg0.c._M_impl._M_finish - $arg0.c._M_impl._M_startset $capacity $arg0.c._M_impl._M_end_of_storage - $arg0.c._M_impl._M_startset $i $size - 1while $i 0p *($arg0.c._M_impl._M_start $i)set $i--endprintf Priority queue size %u\n, $sizeprintf Priority queue capacity %u\n, $capacityend
enddocument ppqueuePrints std::priority_queueT information.Syntax: ppqueue priority_queue: Prints all elements, size and capacity of the priority_queuePriority_queue elements are listed top to buttom (top-most element is the first to come on pop)Example:ppqueue pq - prints all elements, size and capacity of pq
end#
# std::bitset
#define pbitsetif $argc 0help pbitsetelsep /t $arg0._M_wend
enddocument pbitsetPrints std::bitsetn information.Syntax: pbitset bitset: Prints all bits in bitsetExample:pbitset b - prints all bits in b
end#
# std::string
#define pstringif $argc 0help pstringelseprintf String \t\t\t \%s\\n, $arg0._M_data()printf String size/length \t %u\n, $arg0._M_rep()._M_lengthprintf String capacity \t %u\n, $arg0._M_rep()._M_capacityprintf String ref-count \t %d\n, $arg0._M_rep()._M_refcountend
enddocument pstringPrints std::string information.Syntax: pstring stringExample:pstring s - Prints content, size/length, capacity and ref-count of string s
end #
# std::wstring
#define pwstringif $argc 0help pwstringelsecall printf(WString \t\t \%ls\\n, $arg0._M_data())printf WString size/length \t %u\n, $arg0._M_rep()._M_lengthprintf WString capacity \t %u\n, $arg0._M_rep()._M_capacityprintf WString ref-count \t %d\n, $arg0._M_rep()._M_refcountend
enddocument pwstringPrints std::wstring information.Syntax: pwstring wstringExample:pwstring s - Prints content, size/length, capacity and ref-count of wstring s
end #
# C related beautifiers (optional)
#set print pretty on
set print object on
set print static-members on
set print vtbl on
set print demangle on
set demangle-style gnu-v3
set print sevenbit-strings off