GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo encontrar las personas que llaman y el destinatario de una función en código C en vi/vim?

ejemplo mínimo de cscope

Ingo lo mencionó, aquí hay un ejemplo.

Primero debes establecer en tu .vimrc :

set cscopequickfix=s-,c-,d-,i-,t-,e-

Luego al directorio base de su proyecto y ejecute:

cscope -Rb

Esto genera un cscope.out archivo que contiene la información analizada. La generación es razonablemente rápida, incluso para grandes proyectos como el kernel de Linux.

Abre vim y ejecuta:

:cs add cscope.out
:cs find c my_func

c es un mnemotécnico para callers . El otro cscope siempre que las consultas también sean posibles, los nemotécnicos se enumeran en:

help cscope

Esto agrega una lista de personas que llamaron a la lista de soluciones rápidas, que puede abrir con:

:copen

Vaya a la línea que le interese y presione enter para saltar allí.

Para encontrar a las personas que llaman con el nombre de la función actualmente bajo el cursor, agregue a su .vimrc :

function! Csc()
  cscope find c <cword>
  copen
endfunction
command! Csc call Csc()

e ingresa :Csc<enter> cuando el cursor está encima de la función.

POR HACER:

  • hazlo para la función actual debajo del cursor con un solo comando. Relacionado:Mostrar el nombre de la función en la línea de estado
  • agregue automáticamente la base de datos más cercana (directorios principales) cuando ingrese un archivo:cómo cargar automáticamente cscope.out en vim
  • abra de forma interactiva el gráfico de llamadas como Eclipse. Relacionado:Generar árbol de llamadas desde la base de datos de cscope

Un consejo:me encanta vim, pero es demasiado complicado para mí configurar este tipo de cosas. Y no tiene en cuenta las clases, p. en C++. Si un proyecto le importa lo suficiente, intente que funcione en algún "IDE". Puede implicar algunos gastos generales si el proyecto no realiza un seguimiento de los archivos de configuración IDE (que son blobs que cambian automáticamente y contaminan el repositorio...), pero para mí vale la pena. Para C/C++, mi favorito hasta ahora fue KDevelop 4.


Para eso, Vim se integra con el cscope herramienta; ver :help cscope para más información.


Linux
  1. ¿Cómo encontrar el tipo de archivo Img y montarlo?

  2. Cómo llamar a la función C en C++, función C++ en C (Mezclar C y C++)

  3. Cómo obtener todos los archivos que excedan cierto tamaño y eliminarlos

  4. ¿Cómo encuentro el tamaño máximo de pila?

  5. Cómo canalizar los resultados de 'buscar' a mv en Linux

Cómo encontrar recursivamente y enumerar los archivos por fecha en Linux

Cómo encontrar quién reinició el sistema Linux y cuándo

Cómo encontrar el ID de proceso de un programa y eliminarlo [Consejo rápido]

Cómo encontrar el PID y PPID de un proceso en Linux

Cómo encontrar y reemplazar texto en Vim

Cómo encontrar la ubicación de sus servidores con Traceroute y WHOIS