Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Aporte] Cómo hacer el TP entero en VSCode #1878

Closed
dariokozicki opened this issue Aug 9, 2020 · 13 comments
Closed

[Aporte] Cómo hacer el TP entero en VSCode #1878

dariokozicki opened this issue Aug 9, 2020 · 13 comments

Comments

@dariokozicki
Copy link

Hola!

Habiendo aprobado con mi grupo ayer y después de sufrir bastante cuatrimestres anteriores, armé una guía de cómo armar el proyecto entero en VSCode.. Este cuatri lo hicimos 100% VSC y es completamente posible llegar tranquilo a las entregas.

Próximamente tengo pensado hacer un video siguiendo estos mismos pasos, pero por ahora les dejo esto para ver qué les parece.

Saludos!

@mgarciaisaia
Copy link
Member

Antes de seguir colgándola, gracias. Lindo laburo :)

@nubevi
Copy link

nubevi commented Aug 20, 2020

Realmente eres el rey de reyes. Muchas gracias Dario! Estaría muy copado que puedas hacer el vídeo para mayor didáctica.

Saludos!

PD: Buen meme el de Capusotto ;)

@dariokozicki
Copy link
Author

dariokozicki commented Aug 30, 2020

@nubevi Gracias!

Habemus video UTNSO: Cómo hacer el TP en VSCode

@SantiagoIvan
Copy link

Holaa! Doy certificado de que funciona perfecto todo, incluso lo probe añadiendo al workspace el tp0 y me funciona perfecto. Ya armé el proyecto del tp para usarlo con mi grupo y a todos les funciona perfecto.
El unico problema que tengo yo y solamente yo es que (no se si a alguno le pasó) por más que tenga instalado el pluggin de INtellSense, no me autocompleta las cosas Alguna sugerencia?

@dariokozicki
Copy link
Author

Gracias por tanto!
A nosotros nos pasaba eso cada tanto, creo que tiene que ver con qué tan pesado está siendo VSC para tu compu, entonces si tenes 10 pestañas abiertas de repente ya no lo hacía.
Lo que hacíamos para arreglarlo (al mejor estilo de Sistemas) era cerrar y volver a abrir VSC, y el autocompletado volvía.

@nico-abram
Copy link

Muchisimas gracias!

Yo tuve algunos problemas, pero con hacer dos cosas parece que me anda todo joya ahora:

  • Actualizar el vscode a la version mas reciente (La mas mas reciente no se puede porque ya no soporta 32bit, la que paso es la ultima de 32bit) https://code.visualstudio.com/updates/v1_35 (Es el .deb, es nomas abrirlo con el package manager y se actualiza)
  • Cambiar "intelliSenseMode": "clang-x64" por clang-86 (Para que sea de 32bits en vez de 64) en los archivos c_cpp_properties.json de las carpetas .vscode

Tuve que cerrarlo y abrirlo un par de veces y me parece que actualizo unas cosas de la extension de C++

Otra cosa es que pueden hacer que compile automaticamente cuando debugean, es nada mas agregar esta linea en los launch.json

"preLaunchTask": "Make",

Y este objeto en el array en los archivos tasks.json:

        {
            "label": "Make",
            "type": "shell",
            "command": "make",
            "problemMatcher": [
                "$gcc"
            ]
        },

Y un tip mas: Si quieren que se formatien automaticamente los archivos cuando los guardan, pueden apretar ctrl+shift+p, se abre una barra, buscan preferences UI
imagen
se abre una ventana, ahi buscan "format" y tildan "format on save"
imagen
O pueden abrir el JSON de preferences y agregar esta linea:

"editor.formatOnSave": true

@dariokozicki
Copy link
Author

dariokozicki commented Sep 6, 2020

@nico-abram Genio! Te animas a hacer un pull request y te lo mergeo? 😃
(pd: Me encantó que le agregaste el make antes de debug!)

@alejo0998
Copy link

Buenas! Con mi grupo estamos utilizando esta herramienta pero estamos teniendo un inconveniente a la hora de debuggear, cuando debuggeamos y entramos a la carpeta SHARED, y entramos al archivo en cuestion y ejecutamos paso por paso, nos tira este error, no sabemos bien a que se debe y en internet no encontramos informacion al respecto, alguien tiene idea porque puede ser? Desde ya, muchas gracias

Captura

@nico-abram
Copy link

nico-abram commented Sep 8, 2020

Buenas!

A mi tambien me estuvo tirando errores similares pero no tuve problema ignorandolos, me parece que es que el intellisense/debugger buscan el codigo fuente de las bibliotecas estandar (especificamente glibc) de C y no lo encuentran

Capaz se puede hacer algo parecido a lo que recomienda este comentario: microsoft/vscode-cpptools#811 (comment)
Pero con la version y el path que te muestra. Pero no lo probe

@nico-abram
Copy link

Me parece que lo que comente arriba me anduvo, fue esto lo que hice:

sudo apt install glibc-source
cd /usr/src/glibc
sudo tar xvf glibc-2.23.tar.xz

Y en el launch.json de cada modulo:

            "sourceFileMap": {
                "/build/glibc-ViVLyQ": "/usr/src/glibc"
            },

No se si el hash y la version seran los mismos para todos, me imagino que si al usar la misma vm, si no la actualizaron

Tampoco estoy seguro de que me lo arreglo, pero ya debugie y modifique archivos y no vi el cartelito que veia antes

@FlorAldonatti
Copy link

@dariokozicki Muchas gracias! La verdad que tanto el post como el video super detallados. Sin conocer ninguna de las herramientas pude configurar todo de 10 👍

@nico-abram
Copy link

Buenas!

Queria dejar comentado que el intellisense me da un error cuando uso extensiones de GCC como "nested functions" que estan buenas para algunas cosas (Especialmente para las funciones de iterar/etc de las common para colecciones que reciben punteros a funcion, no solo para tenerlas en el lugar de uso sino tambien por el "lexical scoping")

Entiendo que incluso con el vscode mas reciente no hay solucion (Por lo que vi en este issue microsoft/vscode-cpptools#1035 ), pero capaz alguien sabia algo

Por ahora me estuve manejando usando C estandar sin la extension porque son muy molestos los errores

@dariokozicki
Copy link
Author

dariokozicki commented Sep 19, 2020

@nico-abram Es como vos decís, las nested functions son válidas para gcc pero no son del estándar de C, por eso no te las entiende VSCode; y hasta el momento no hay un fix, así que si las usás te va a quedar rojito (vas a poder debuggear dentro de ellas y todo, es solo visual)
De todas formas yo para amagar eso (en algunos lugares si, en otros no) directamente declaré las funciones de manera normal y las pasé por parámetro. Ej:

void* list_find_with_args(t_list *self, bool(*condition)(void*, void*), void* args) {
	t_link_element *element = self->head;
	int position = 0;

	while (element != NULL && !condition(element->data, args)) {
		element = element->next;
		position++;
	}

	return element != NULL ? element->data : NULL;
}

bool has_connection_id(void* data, void* id){
    return ((t_connection*) data)->id_connection == (uint32_t) id;
}

void handle_reconnect(uint32_t client_fd, reconnect* reconn){
    t_connection* conn = (t_connection*) 
        list_find_with_args(
            connections, 
            has_connection_id, 
            (void*) reconn->id_connection
        );
   [etc...]
}

(list_find_with_args es el list_find de la commons que además recibe argumentos extra, se lo cambié a manopla)
Haciendo esto te evitas repetir la nested function en varios lugares.
En una función te puede quedar bastante cómodo:
t_message_queue* queue = list_find_with_args(list_queues, has_queue_id,(void*) queue_id);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

9 participants