Mocapy GDB

1. Top--------------------------------------------

 # The name of our project is "MOCAPY". CMakeLists files in this project can
# refer to the root source directory of the project as ${MOCAPY_SOURCE_DIR} and
# to the root binary directory of the project as ${MOCAPY_BINARY_DIR}.
cmake_minimum_required (VERSION 2.6.2)
project (MOCAPY C CXX Fortran)
# version number
set(MOCAPY_VERSION 0.1)

# Recurse into the "src" and "examples" subdirectories. This does not actually
# cause another cmake executable to run. The same process will walk through
# the project's entire directory structure.
add_subdirectory (src)
add_subdirectory (examples)
add_subdirectory (tests)

# settings for making distribution package
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Mocapy is a Dynamic Bayesian Network toolkit")
set(CPACK_PACKAGE_VENDOR "Thomas Hamelryck and Martin Paluszewski")
#set(CPACK_PACKAGE_DESCRIPTION_FILE ${CMAKE_CURRENT_SOURCE_DIR}/README)
set(CPACK_GENERATOR TGZ)
set(
        CPACK_SOURCE_PACKAGE_FILE_NAME
        "Mocapy-${MOCAPY_VERSION}"
        CACHE INTERNAL "tarball basename"
        )
set(CPACK_SOURCE_GENERATOR TGZ)
include(CPack)

2 . Subdiretory ----------------------------------------------------------
2.1 src---------------------------------------------
SET(BUILD_RELEASE OFF)
SET(BUILD_DEBUG ON)
SET(BUILD_PROFILE ON)
SET(BUILD_DUMMYRANDOM OFF)

SET(Boost_USE_MULTITHREAD OFF)
       
FIND_PACKAGE(Boost 1.39)

INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})

SET(Mocapy_src
utils/LogFactorial.cpp
multinomial/MultinomialDensities.cpp
multinomial/MultinomialDensity.cpp
multinomial/MultinomialESS.cpp
dirichlet/DirichletDensities.cpp
dirichlet/DirichletDensity.cpp
dirichlet/DirichletESS.cpp
inference/abstractinfengine.cpp
framework/dbn.cpp
discrete/discretedensities.cpp
discrete/discreteess.cpp
discrete/discretepriors.cpp
framework/emengine.cpp
framework/essbase.cpp
inference/detail/forwardbacktracker.cpp
inference/detail/generalinfenginemm.cpp
gaussian/gaussiandensities.cpp
gaussian/gaussianess.cpp
gaussian/shrinkage/Shrinkage.cpp
gaussian/shrinkage/ShrinkageHelpers.cpp
inference/gibbsrandom.cpp
inference/fwbtrandom.cpp
inference/infenginemm.cpp
inference/infenginehmm.cpp
inference/infenginemcmc.cpp
inference/mcmc.cpp
inference/moreabstractinfengine.cpp
gaussian/multigauss.cpp
framework/node.cpp
framework/nodefactory.cpp
framework/parentmap.cpp
poisson/poissondensities.cpp
poisson/poissoness.cpp
poisson/poissonsample.cpp
bippo/bippodensities.cpp
bippo/bippoess.cpp
bippo/bippo.cpp
utils/random_data.cpp
utils/randomgen.cpp
inference/sampleinfengine.cpp
utils/utils.cpp
vonmises/vonmises.cpp
vonmises2d/vonmises2d.cpp
vonmises2d/vonmises2ddensities.cpp
vonmises2d/vonmises2dess.cpp
vonmises/vonmisesdensities.cpp
vonmises/vonmisesess.cpp
kent/kentdensities.cpp
kent/kentess.cpp
)

SET(Integrate_src
utils/netlib/integrate.cpp
utils/netlib/integrate.h
utils/netlib/slatec/d1mach.f
utils/netlib/slatec/d9lgmc.f
utils/netlib/slatec/dcsevl.f
utils/netlib/slatec/dgamlm.f
utils/netlib/slatec/dgamma.f
utils/netlib/slatec/dqags.f
utils/netlib/slatec/dqagse.f
utils/netlib/slatec/dqelg.f
utils/netlib/slatec/dqk21.f
utils/netlib/slatec/dqpsrt.f
utils/netlib/slatec/fdump.f
utils/netlib/slatec/i1mach.f
utils/netlib/slatec/initds.f
utils/netlib/slatec/j4save.f
utils/netlib/slatec/xercnt.f
utils/netlib/slatec/xerhlt.f
utils/netlib/slatec/xermsg.f
utils/netlib/slatec/xerprn.f
utils/netlib/slatec/xersve.f
utils/netlib/slatec/xgetua.f
)

SET(Functions_src
utils/vector_nD.h
utils/optimize.h
utils/netlib/cephes/chbevl.c
utils/netlib/cephes/const.c
utils/netlib/cephes/gamma.c
utils/netlib/cephes/zeta.c
utils/netlib/cephes/i0.c
utils/netlib/cephes/i1.c
utils/netlib/cephes/isnan.c
utils/netlib/cephes/mconf.h
utils/netlib/cephes/mtherr.c
utils/netlib/cephes/polevl.c
)

SET(LIBRARY_OUTPUT_PATH ${MOCAPY_SOURCE_DIR}/libs)

# build release library
IF(BUILD_RELEASE)
add_library (Mocapy STATIC
        ${Mocapy_src}
        ${Integrate_src}
        ${Functions_src}
        )

SET_TARGET_PROPERTIES(Mocapy PROPERTIES COMPILE_FLAGS " -O3 -fPIC -c -fmessage-length=0 -I${MOCAPY_SOURCE_DIR}/src")
ENDIF(BUILD_RELEASE)

#IF(BUILD_RELEASE)
#add_library (Mocapy SHARED
#        ${Mocapy_src}
#        ${Integrate_src}
#        ${Functions_src}
#        )

#SET_TARGET_PROPERTIES(Mocapy PROPERTIES COMPILE_FLAGS " -O3 -fPIC -c -fmessage-length=0 -I${MOCAPY_SOURCE_DIR}/src")
#ENDIF(BUILD_RELEASE)


IF(BUILD_DEBUG)
add_library (MocapyD 
        ${Mocapy_src}
        ${Integrate_src}
        ${Functions_src}
        )
#SET_TARGET_PROPERTIES(MocapyD PROPERTIES COMPILE_FLAGS "-O0 -fPIC -g -Wall -c -fmessage-length=0")

SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g3 -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
SET_TARGET_PROPERTIES(MocapyD PROPERTIES COMPILE_FLAGS "-O0 -fPIC -ggdb -Wall -c -fmessage-length=0")


ENDIF(BUILD_DEBUG)

IF(BUILD_PROFILE)
add_library (MocapyP 
        ${Mocapy_src}
        ${Integrate_src}
        ${Functions_src}
        )
SET_TARGET_PROPERTIES(MocapyP PROPERTIES COMPILE_FLAGS "-pg -fPIC -O3 -Wall -c -fmessage-length=0")
ENDIF(BUILD_PROFILE)

IF(BUILD_DUMMYRANDOM)
add_library (MocapyDR 
        ${Mocapy_src}
        ${Integrate_src}
        ${Functions_src}
        )
SET_TARGET_PROPERTIES(MocapyDR PROPERTIES COMPILE_FLAGS "-DRANDDUMMY  -O3 -fPIC -Wall -c -fmessage-length=0")
ENDIF(BUILD_DUMMYRANDOM)


# install commands
# INSTALL(TARGETS Mocapy 
#        LIBRARY DESTINATION lib
#        ARCHIVE DESTINATION lib
#        )
2.2 example-----------------------------------------

SET(BUILD_RELEASE ON)
SET(BUILD_DEBUG ON)
SET(BUILD_PROFILE ON)
SET(BUILD_DUMMYRANDOM OFF)
SET(CMAKE_VERBOSE_MAKEFILE OFF) 

SET(Boost_USE_STATIC_LIBS ON)

FIND_PACKAGE(Boost COMPONENTS serialization program_options thread REQUIRED)

FIND_LIBRARY(PTHREAD pthread)

# Make sure the compiler can find include files from mocapy.
include_directories (${MOCAPY_SOURCE_DIR}/src)

# find lapack
FIND_LIBRARY(LAPACK_LIBRARY NAMES lapack )
IF(NOT LAPACK_LIBRARY)
message("error: could not find lapack library")
ENDIF(NOT LAPACK_LIBRARY)

# FFLAGS depend on the compiler
get_filename_component (Fortran_COMPILER_NAME ${CMAKE_Fortran_COMPILER} NAME)

if (Fortran_COMPILER_NAME STREQUAL "gfortran")
  # gfortran
  set (CMAKE_FLIB "gfortran")
elseif (Fortran_COMPILER_NAME STREQUAL "g77")
  # g77
  set (CMAKE_FLIB "g2c")
else (Fortran_COMPILER_NAME STREQUAL "gfortran")
#  message ("CMAKE_Fortran_COMPILER full path: " ${CMAKE_Fortran_COMPILER})
#  message ("Fortran compiler: " ${Fortran_COMPILER_NAME})
#  message ("No optimized Fortran link flags are known, we just try -lgfortran")
  set (CMAKE_FLIB "gfortran")
endif (Fortran_COMPILER_NAME STREQUAL "gfortran")

INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})


IF(BUILD_RELEASE)
SET(CMAKE_CXX_FLAGS "-O3 -fPIC -Wall -fmessage-length=0")
SET(MOCAPYLIB Mocapy CACHE STRING "Mocapy library used when linking executables")
ENDIF(BUILD_RELEASE)

IF(BUILD_DEBUG)

SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g3 -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

#SET(CMAKE_CXX_FLAGS "-g -O0 -Wall -fmessage-length=0")
SET(MOCAPYLIB MocapyD CACHE STRING "Mocapy library used when linking executables")
ENDIF(BUILD_DEBUG)

IF(BUILD_PROFILE)
SET(CMAKE_CXX_FLAGS "-pg -O3 -Wall -fmessage-length=0")
SET(MOCAPYLIB MocapyP CACHE STRING "Mocapy library used when linking executables")
ENDIF(BUILD_PROFILE)

IF(BUILD_DUMMYRANDOM)
SET(CMAKE_CXX_FLAGS "-DRANDDUMMY -O3 -Wall -fmessage-length=0")
SET(MOCAPYLIB MocapyDR CACHE STRING "Mocapy library used when linking executables")
ENDIF(BUILD_DUMMYRANDOM)


SET(PROGS mdarray hmm_bippo hmm_factorial hmm_simple hmm_discrete discrete_hmm_with_prior hmm_gauss hmm_gauss_1d hmm_multinomial hmm_dirichlet hmm_poisson hmm_vonmises infenginehmm_example infenginemm_example hmm_torus hmm_kent)
SET(PROGS_BOOST_OPTIONS_THREADS mlr-uni)

FOREACH(p ${PROGS})
        add_executable(${p} ${p}.cpp)
        target_link_libraries (${p} ${MOCAPYLIB}  ${Boost_SYSTEM_LIBRARY} ${Boost_SERIALIZATION_LIBRARY} ${LAPACK_LIBRARY} ${CMAKE_FLIB})
ENDFOREACH(p)

FOREACH(p ${PROGS_BOOST_OPTIONS_THREADS})
        add_executable(${p} ${p}.cpp)
        target_link_libraries (${p} ${MOCAPYLIB} ${Boost_SYSTEM_LIBRARY} ${Boost_SERIALIZATION_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${Boost_THREAD_LIBRARY} ${PTHREAD} ${LAPACK_LIBRARY} ${CMAKE_FLIB})
ENDFOREACH(p)

# copy data directory
exec_program(
        ${CMAKE_COMMAND}
        ARGS
        "-E create_symlink \"${CMAKE_CURRENT_SOURCE_DIR}/data\" \"${CMAKE_CURRENT_BINARY_DIR}/data\""
        )
#exec_program(
#        ${CMAKE_COMMAND}
#        ARGS
#        "-E copy_directory \"${CMAKE_CURRENT_SOURCE_DIR}/data\" \"${CMAKE_CURRENT_BINARY_DIR}\""
#        )

2.3 tests-------------------------------------------

SET(BUILD_RELEASE OFF)
SET(BUILD_DEBUG ON)
SET(BUILD_PROFILE ON)
SET(BUILD_DUMMYRANDOM OFF)

SET(Boost_ADDITIONAL_VERSIONS "1.39" "1.39.0" "1.38" "1.38.0" "1.37" "1.37.0" "1.36" "1.36.0" )
SET(Boost_USE_STATIC_LIBS ON)

FIND_PACKAGE(Boost COMPONENTS serialization 1.39)
IF(NOT BOOST_serialization_FOUND )
       FIND_PACKAGE(Boost COMPONENTS serialization 1.39.0)
ENDIF(NOT BOOST_serialization_FOUND)
IF(NOT BOOST_serialization_FOUND )
       FIND_PACKAGE(Boost COMPONENTS serialization 1.38)
ENDIF(NOT BOOST_serialization_FOUND)
IF(NOT BOOST_serialization_FOUND )
                FIND_PACKAGE(Boost COMPONENTS serialization 1.38.0)
ENDIF(NOT BOOST_serialization_FOUND)
IF(NOT BOOST_serialization_FOUND )
        FIND_PACKAGE(Boost 1.37 COMPONENTS serialization )
ENDIF(NOT BOOST_serialization_FOUND)
IF(NOT BOOST_serialization_FOUND )
                FIND_PACKAGE(Boost COMPONENTS serialization 1.37.0)
ENDIF(NOT BOOST_serialization_FOUND)
IF(NOT BOOST_serialization_FOUND )
        FIND_PACKAGE(Boost 1.36 COMPONENTS serialization )
ENDIF(NOT BOOST_serialization_FOUND)
IF(NOT BOOST_serialization_FOUND )
                FIND_PACKAGE(Boost COMPONENTS serialization 1.36.0)
ENDIF(NOT BOOST_serialization_FOUND)

# Make sure the compiler can find include files from mocapy.
include_directories (${MOCAPY_SOURCE_DIR}/src)

# find lapack
FIND_LIBRARY(LAPACK_LIBRARY NAMES lapack )
IF(NOT LAPACK_LIBRARY)
message("error: could not find lapack library")
ENDIF(NOT LAPACK_LIBRARY)

# FFLAGS depend on the compiler
get_filename_component (Fortran_COMPILER_NAME ${CMAKE_Fortran_COMPILER} NAME)

if (Fortran_COMPILER_NAME STREQUAL "gfortran")
  # gfortran
  set (CMAKE_FLIB "gfortran")
elseif (Fortran_COMPILER_NAME STREQUAL "g77")
  # g77
  set (CMAKE_FLIB "g2c")
else (Fortran_COMPILER_NAME STREQUAL "gfortran")
#  message ("CMAKE_Fortran_COMPILER full path: " ${CMAKE_Fortran_COMPILER})
#  message ("Fortran compiler: " ${Fortran_COMPILER_NAME})
#  message ("No optimized Fortran link flags are known, we just try -lgfortran")
  set (CMAKE_FLIB "gfortran")
endif (Fortran_COMPILER_NAME STREQUAL "gfortran")

INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS} ${MOCAPY_SOURCE_DIR}/src)

IF(BUILD_RELEASE)
SET(CMAKE_CXX_FLAGS "-lboost_system -lboost_filesystem   -O3 -Wall -fmessage-length=0")
SET(MOCAPYLIB Mocapy CACHE STRING "Mocapy library used when linking executables")
ENDIF(BUILD_RELEASE)

IF(BUILD_DEBUG)

SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g3 -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")


#SET(CMAKE_CXX_FLAGS "-g -O0 -Wall -fmessage-length=0")
SET(MOCAPYLIB MocapyD CACHE STRING "Mocapy library used when linking executables")
ENDIF(BUILD_DEBUG)

IF(BUILD_PROFILE)
SET(CMAKE_CXX_FLAGS "-pg -O3 -Wall -fmessage-length=0")
SET(MOCAPYLIB MocapyP CACHE STRING "Mocapy library used when linking executables")
ENDIF(BUILD_PROFILE)

IF(BUILD_DUMMYRANDOM)
SET(CMAKE_CXX_FLAGS "-DRANDDUMMY -O3 -Wall -fmessage-length=0")
SET(MOCAPYLIB MocapyDR CACHE STRING "Mocapy library used when linking executables")
ENDIF(BUILD_DUMMYRANDOM)

SET(PROGS infenginehmm_test infenginemm_test)

FOREACH(p ${PROGS})
        add_executable(${p} ${p}.cpp)
        target_link_libraries (${p} ${MOCAPYLIB} ${boost_system}   ${Boost_SERIALIZATION_LIBRARY} ${LAPACK_LIBRARY} ${CMAKE_FLIB})

ENDFOREACH(p)

3. --/build$ cmake -DCMAKE_BUILD_TYPE=debug ..
4. --- make
5.build/examples$ gdb ./mdarray 

----------------------

(gdb) list
2    This file shows some of the things you can do with Mocapy++'s MDArray.
3    
4    The MDArray is a Multi-Dimensional array with many features. One feature is
5    that the shape can be modified at run time.
6    */
7    
8    #include <iostream>
9    #include <stdio.h>
10    #include <stdlib.h>
11    
(gdb) break 11
Breakpoint 1 at 0x555555557a10: file /home/liufeng/FpxStudio/Research/cppStudio/Mocapy++-1.07-debug/examples/mdarray.cpp, line 11.
(gdb) r
Starting program: /home/liufeng/FpxStudio/Research/cppStudio/Mocapy++-1.07-debug/build/examples/mdarray 

Breakpoint 1, main () at /home/liufeng/FpxStudio/Research/cppStudio/Mocapy++-1.07-debug/examples/mdarray.cpp:16
16    int main(void) {
(gdb) n
18      MDArray<double> myMDA01(vec(2,2));
(gdb) n
16    int main(void) {
(gdb) n
18      MDArray<double> myMDA01(vec(2,2));
(gdb) n
16    int main(void) {
(gdb) n
18      MDArray<double> myMDA01(vec(2,2));
(gdb) n
16    int main(void) {
(gdb) n
18      MDArray<double> myMDA01(vec(2,2));
(gdb) n
434          { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
(gdb) n
435                  _M_get_Tp_allocator()); }
(gdb) n
21      cout << myMDA01 << endl;
(gdb) n
[0 0 ]
[0 0 ]

24      myMDA01.set(0,0,1);
(gdb) 
#----------------------------------

by emacs  step

a) cd ../build/examples

b) emacs(24.5.1)

c) select GDB in menu Tools---> gdb -i=mi hmm_kent

d) b main

e) r

f) n

g) by the menu instruction, ok!!!

31           mocapy_seed((uint)5556575);
(gdb) p tdbn
$1 = {randomGen = 0x555555ba5980, is_constructed = true, nr_nodes = 2, total_output_size = 4, name = "", index_map = std::map with 3 elements = {["th0"] = {first = 0, second = 0}, ["th1"] = {first = 0, second = 1}, ["to0"] = {first = 1, second = 1}}, nodes_0 = std::vector of length 2, capacity 2 = {0x555555ba4b60, 0x555555ba5640}, nodes_1 = std::vector of length 2, capacity 2 = {0x555555ba50d0, 0x555555ba5640}, unique_nodes = std::vector of length 3, capacity 4 = {0x555555ba4b60, 0x555555ba50d0, 0x555555ba5640}, all_nodes = std::vector of length 4, capacity 4 = {0x555555ba4b60, 0x555555ba5640, 0x555555ba50d0, 0x555555ba5640}, myseed = 5556575}

------ GREAT EMACS!  --- STEP INTO STL


      // Called by _M_fill_insert, _M_insert_aux etc.
      size_type
      _M_check_len(size_type __n, const char* __s) const
      {
    if (max_size() - size() < __n)
      __throw_length_error(__N(__s));

    const size_type __len = size() + std::max(size(), __n);
    return (__len < size() || __len > max_size()) ? max_size() : __len;
      }
stl_vector.h-----

#else
  template<typename _Tp, typename _Alloc>
    void
    vector<_Tp, _Alloc>::
    _M_realloc_insert(iterator __position, const _Tp& __x)
#endif
    {
      const size_type __len =
    _M_check_len(size_type(1), "vector::_M_realloc_insert");
      const size_type __elems_before = __position - begin();
      pointer __new_start(this->_M_allocate(__len));
      pointer __new_finish(__new_start);
      __try
    {
      ----  vector.tcc

!!!!! thankyou EMACS!

猜你喜欢

转载自blog.csdn.net/liufengl138/article/details/83037270
GDB